搜尋

首頁  >  問答  >  主體

"WordPress的has_term()函數未能如預期般運作"

我有一個自訂的文章分類法,定義如下:

// 为文章注册自定义分类法
function custom_taxonomy_page_type_for_posts() {
    $labels = array(
        'name'              => _x( '页面类型', '分类法通用名称' ),
        'singular_name'     => _x( '页面类型', '分类法单数名称' ),
        ...

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

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

在以下程式碼中,我想根據目前文章是否被指派為「簡報」頁面類型來新增一個body類別。

/* 这将在body标签上添加“vn-briefing”或“vn-not-briefing”类。 */
function add_page_type_css_class($classes) {
    if (is_singular('post')) {
        // 检查文章是否被分配了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');

即使文章被指派了ID=187的“頁面類型”為“簡報”,它總是會傳回false。

我希望如果文章被指派了「簡報」頁面類型,該函數傳回true,但它沒有。

我還嘗試過:

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

我該如何做?

P粉248602298P粉248602298451 天前521

全部回覆(1)我來回復

  • P粉022723606

    P粉0227236062023-09-07 10:08:18

    正確的語法應該是 has_term('briefing', 'page_type')。以下是更新後的程式碼:

    function add_page_type_css_class($classes) {
      if (is_singular('post')) {
        // 检查帖子是否有“页面类型”分类法,其别名为 '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');

    回覆
    0
  • 取消回覆