WordPress has_term()函数验证自定义分类失效问题求助
解决方法
问题核心是has_term函数的第二个参数使用错误——必须传入自定义分类法的内部注册名称,而非显示名称、单数名称或URL别名。
从你的注册代码能看到,自定义分类法的内部名称是page_type(对应register_taxonomy('page_type', 'post', $args);中的第一个参数),这才是has_term需要的正确参数值。
修改后的完整函数代码如下:
/* 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')) { // 使用分类法的内部标识符 'page_type' 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');
可选验证技巧
- 不确定分类法内部名称时,可在后台进入「文章」→「Page Types」,查看浏览器地址栏的URL,其中会包含
taxonomy=page_type,这就是正确的内部名称。 - 也可以直接用分类ID替代名称,避免拼写误差:
has_term(187, 'page_type'),验证逻辑会更精准。
内容的提问来源于stack exchange,提问作者Greg Fuller
相关产品推荐
相关产品推荐

