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

WordPress API技术咨询:如何获取关联Tags的Pages数据

获取关联Tags的WordPress Pages的方法

嗨,这个问题我之前也碰到过,WordPress后台里Pages和Posts明明都能加标签,但默认的REST API返回Page对象时确实不会带上Tags属性,不过有几个实用的方法可以解决这个问题:

方法1:扩展REST API响应,给Page添加Tags字段

你可以通过WordPress的钩子来修改Page的API返回数据,把标签信息加进去。只需要把下面的代码放到你的主题functions.php文件里,或者创建一个简单的自定义插件:

add_filter( 'rest_prepare_page', 'add_tags_to_page_api_response', 10, 3 );
function add_tags_to_page_api_response( $response, $post, $request ) {
    // 获取当前页面关联的所有标签
    $page_tags = wp_get_post_tags( $post->ID );
    
    // 如果你只需要标签ID,用下面这行
    $response->data['tags'] = wp_list_pluck( $page_tags, 'term_id' );
    
    // 要是想要完整的标签详情(比如名称、slug),可以直接返回标签对象数组
    // $response->data['tags'] = $page_tags;
    
    return $response;
}

添加之后,再调用/wp-json/wp/v2/pages获取页面列表,每个Page对象里就会多出tags字段啦。

方法2:通过标签直接查询关联的Pages

如果你想获取某个特定标签下的所有页面,不用修改API也能做到:

  • 用REST API的话,直接请求:/wp-json/wp/v2/pages?tags=你的标签ID
  • 如果是在自定义代码里查询,可以用WP_Query:
$tagged_pages_query = new WP_Query( array(
    'post_type' => 'page',
    'tag_id'    => 123, // 替换成你的标签ID,也可以用'tag' => '标签slug'
    'posts_per_page' => -1 // 获取所有符合条件的页面
) );

// 循环处理查询结果
if ( $tagged_pages_query->have_posts() ) {
    while ( $tagged_pages_query->have_posts() ) {
        $tagged_pages_query->the_post();
        // 这里可以获取页面信息,比如 get_the_title()、get_the_ID() 等
    }
    wp_reset_postdata();
}

方法3:使用嵌入式关联数据

如果不想修改API响应结构,也可以在请求API时加上_embed参数,比如:/wp-json/wp/v2/pages?_embed。这样返回的结果里会有_embedded字段,其中wp:term下的post_tag数组就是当前页面的标签详情。不过这个方法需要确保WordPress已经识别到Pages和Post标签的关联,有时候可能还是需要配合方法1的钩子来保证数据正确返回。

简单来说,核心原因是WordPress默认的REST API没有把Tags字段包含在Page的响应里,但后台的标签功能其实是支持Pages的,所以通过上面的方法就能轻松获取到关联标签的Pages啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:39:22