WordPress中functions.php里is_category()函数不触发的问题
问题原因及解决办法
1. 自定义分类法不兼容is_category()
如果你的分类页面用的是自定义分类法(而非WordPress默认的文章分类),is_category()仅对默认分类生效,自然不会触发。这种情况换成is_tax()即可:
// 匹配所有自定义分类归档页面 if (is_tax()) { ... } // 匹配指定自定义分类法(比如名为"product_cat"的分类) if (is_tax('product_cat')) { ... }
2. 主查询被修改导致条件标签异常
如果主题或插件通过pre_get_posts等钩子修改了主查询参数,可能会让is_category()返回false,但模板系统依然会根据URL路径匹配到category.php。可以临时在函数里打印主查询状态验证:
global $wp_query; var_dump($wp_query->is_category); // 查看是否为true
如果输出false,说明主查询的分类标记被修改了,需要检查相关的查询修改代码。
3. 调整条件判断逻辑
把is_category()的判断从elseif改成独立的if语句,避免前面的条件意外拦截(虽然当前顺序理论上没问题,但实际场景中可能存在未知的全局条件干扰):
function load_ngof_files() { wp_enqueue_style( 'ngof_common', get_template_directory_uri() . '/assets/css/com.css'); if (is_front_page()) { wp_enqueue_style( 'ngof_front', get_template_directory_uri() . '/assets/css/front.css'); } // 改成独立if,不受其他条件影响 if (is_category()) { echo "category"; wp_enqueue_style( 'ngof_cat', get_template_directory_uri() . '/assets/css/cat.css'); } if (is_page()) { echo "page"; } if (is_single()) { echo "single"; } } add_action('wp_enqueue_scripts', 'load_ngof_files' );
内容的提问来源于stack exchange,提问作者johnbell
相关产品推荐
相关产品推荐

