我有一个自定义的文章分类法,定义如下:
// 为文章注册自定义分类法
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')
我该如何做?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
正确的语法应该是 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');