You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过WordPress REST API返回合法JSON数组而非JSON对象?

解决MetaSlider返回JSON对象转数组的方案

方案1:自定义REST API端点

直接在主题的functions.php(或自定义插件)中添加一个自定义API端点,手动获取MetaSlider数据并整理成数组格式返回:

add_action('rest_api_init', function () {
    register_rest_route('custom/v1', '/slides/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'custom_get_metaslider_as_array',
        'permission_callback' => '__return_true', // 公开访问,如需权限可调整
    ));
});

function custom_get_metaslider_as_array($request) {
    $slider_id = $request['id'];
    // 获取MetaSlider的滑块数据
    $slides = metaslider_get_slides($slider_id);
    
    // 将对象结构转为数组
    $slides_array = array_values((array)$slides);
    
    // 返回JSON数组
    return rest_ensure_response($slides_array);
}

使用时访问https://你的站点域名/wp-json/custom/v1/slides/滑块ID即可得到数组格式的响应。

方案2:过滤MetaSlider的API响应

利用MetaSlider提供的REST API钩子,修改它的默认输出结构:

add_filter('metaslider_rest_api_slides_response', 'convert_metaslider_response_to_array', 10, 2);

function convert_metaslider_response_to_array($response, $slider_id) {
    // 将对象转为索引数组
    return array_values((array)$response);
}

添加这段代码后,MetaSlider原API端点返回的内容会自动转为数组格式,无需修改移动端请求地址。

方案3:移动端临时兼容(备选)

如果暂时无法修改后端,可让移动端开发者在收到JSON对象后,通过代码提取值转为数组,比如JavaScript示例:

// 假设后端返回的是obj
const slidesArray = Object.values(obj);

但优先推荐前两种后端修改方案,保证API结构的规范性。

内容的提问来源于stack exchange,提问作者user3671371

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:50:37