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

如何修改自定义WordPress REST API返回结构,加入分页字段实现目标JSON

修改方案

你只需要调整myspace_get_posts_by_tag函数中返回数据的组装逻辑,将已有的分页参数插入数组即可,修改后的完整代码如下:

add_action( 'rest_api_init', function () {
    register_rest_route( 'myspace/v1/', 'get-by-tag/(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)/(?P<page>[1-9]{1,2})', array(
        'methods' => WP_REST_Server::READABLE,
        'callback' => 'myspace_get_posts_by_tag',
        'args' => array(
            'slug' => array(
                'required' => true
            ),
            'page' => array(
                'required' => true
            ),                  
        )
    ));
});

function myspace_get_posts_by_tag(WP_REST_Request $request) {

    $slug = $request['slug'];
    // 转成整型,保证JSON输出为数字格式
    $page = (int)$request['page'];

    $term = get_term_by('slug', $slug, 'post_tag');
    $posts_per_page = 1;

    $args = array(
        'tag__in'           => $term->term_id,
        'posts_per_page'    => $posts_per_page,
        'paged'             => $page,
        'orderby'           => 'date',
        'order'             => 'desc',
    );

    $query = new WP_Query( $args ); 

    $max_pages = (int)$query->max_num_pages;
    $total = $query->found_posts;

    $posts = $query->posts;
    $controller = new WP_REST_Posts_Controller('post');

    // 提前初始化返回结构,避免无查询结果时字段缺失
    $data = [
        'items' => [
            'currentPage' => $page,
            'pageCount' => $max_pages,
            'posts' => []
        ]
    ];

    foreach ( $posts as $post ) {
         $data["items"]["posts"][] = array(
             // 其他自定义字段可继续在此处扩展
             "title" => $post->post_title
         );     
    }
     
    $response = new WP_REST_Response($data, 200);
    $response->header( 'X-WP-Total', $total ); 
    $response->header( 'X-WP-TotalPages', $max_pages );
    return $response;
}

修改后返回的JSON结构完全符合你的需求,同时兼容无查询结果的边界场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:30:00