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

如何在WP_Query自定义文章类型循环中获取分类法Term

错误原因

WP_Query的get_queried_object()方法返回的是整个查询对应的顶层对象,你当前的查询是拉取services类型的文章列表,查询的顶层对象就是services这个自定义文章类型本身,所以拿到的name自然是自定义文章类型的注册名称,和单篇文章关联的分类术语(term)没有关联。

修复方案

在循环内部通过get_the_terms()方法获取当前文章绑定的term即可,你需要先把代码中的分类法别名替换为你实际给services注册的分类法(示例中用service_category做占位,你改成自己的分类法别名就行):

$args = array(  
    'post_type' => 'services',
    'post_status' => 'publish',
    'posts_per_page' => 8, 
    'orderby' => 'title', 
    'order' => 'ASC', 
);

$loop = new WP_Query( $args ); 
        
while ( $loop->have_posts() ) : $loop->the_post(); 
    // 获取当前文章关联的指定分类法下的所有term
    $terms = get_the_terms( get_the_ID(), 'service_category' );
    if ( $terms && ! is_wp_error( $terms ) ) {
        // 如果只需要取第一个term就用下面的写法
        $first_term = array_shift( $terms );
        echo $first_term->name;
        // 如果要输出所有关联term可以遍历$terms数组
        // foreach ( $terms as $term ) {
        //     echo $term->name . ' ';
        // }
    }

    echo get_the_title(); 

endwhile;
wp_reset_postdata(); 
  • 如果单篇文章只会绑定一个对应分类法的term,直接取数组第一个元素即可,不需要遍历
  • 如果需要获取多个分类法的term,多次调用get_the_terms()传入不同分类法别名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:03