You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:26:13