WordPress的has_term()没有按预期工作

9nvpjoqh  于 2023-08-03  发布在  WordPress
关注(0)|答案(1)|浏览(100)

我有一个自定义的帖子分类,定义如下:

// Register custom taxonomy for posts
function custom_taxonomy_page_type_for_posts() {
    $labels = array(
        'name'              => _x( 'Page Types', 'taxonomy general name' ),
        'singular_name'     => _x( 'Page Type', 'taxonomy singular name' ),
        ...

    $args = array(
        'hierarchical'      => false,
        ...
        'rewrite'           => array( 'slug' => 'page-type' ),
        'show_in_rest'      => true,
    );

    register_taxonomy( 'page_type', 'post', $args );
}

字符串
在下面的代码中,我想添加一个body类,这取决于当前帖子是否被分配了“Briefing”的页面类型。

/* This either adds the class "vn-briefing" or "vn-not-briefing" to the body tag. */
function add_page_type_css_class($classes) {
    if (is_singular('post')) {
        // Check if the post has a "Page Types" taxonomy assigned with ID 187
        if (has_term('Briefing', 'Page Types')) {
            $classes[] = 'is-briefing';
        } else {
            $classes[] = 'is-not-briefing';
        }
    }
    return $classes;
}
add_filter('body_class', 'add_page_type_css_class');


它总是返回false,即使文章被分配了ID=187 Briefing的“页面类型”。
我期望函数返回true,如果文章被分配了一个“简报”的页面类型,但它没有。
我也试过:

has_term('Briefing', 'Page Type')
   has_term('Briefing', 'page-type')


我该怎么做?

njthzxwz

njthzxwz1#

正确的语法应该是has_term('briefing ','page_type')。下面是更新后的代码:

function add_page_type_css_class($classes) {
  if (is_singular('post')) {
    // Check if the post has a "Page Types" taxonomy assigned with slug 'briefing'
    if (has_term('briefing', 'page_type')) {
        $classes[] = 'is-briefing';
    } else {
        $classes[] = 'is-not-briefing';
    }
 }
 return $classes;
}
add_filter('body_class', 'add_page_type_css_class');

字符串

相关问题