Heim  >  Fragen und Antworten  >  Hauptteil

„WordPresss has_term()-Funktion funktioniert nicht wie erwartet“

Ich habe eine benutzerdefinierte Artikeltaxonomie, die wie folgt definiert ist:

// 为文章注册自定义分类法
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 );
}

Im folgenden Code möchte ich eine Body-Klasse hinzufügen, die darauf basiert, ob der aktuelle Artikel als Seitentyp „Newsletter“ zugewiesen ist.

/* 这将在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');

Auch wenn dem Artikel „Seitentyp“ mit der ID=187 als „Newsletter“ zugewiesen ist, gibt er immer „falsch“ zurück.

Ich habe erwartet, dass die Funktion „true“ zurückgibt, wenn dem Beitrag der Seitentyp „Newsletter“ zugewiesen wurde, aber das ist nicht der Fall.

Ich habe es auch versucht:

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

Was soll ich tun?

P粉248602298P粉248602298382 Tage vor468

Antworte allen(1)Ich werde antworten

  • 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');

    Antwort
    0
  • StornierenAntwort