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

WordPress重写规则生效但is_catalog函数失效,求技术协助

问题分析与解决方案

你的重写规则已生效但is_catalog()函数无法正常工作,主要是变量传递细节、函数返回值不完整或调用时机不对导致的,以下是具体修复步骤:

1. 修正重写规则的变量捕获

原规则中使用$matches[0]虽理论上能匹配到catalog,但用明确的捕获组更稳妥,可避免潜在匹配异常:

add_rewrite_rule(
    '^(catalog)$', 
    'index.php?expage=$matches[1]', 
    'top'
);

修改后记得刷新WordPress重写规则:进入后台「设置」→「固定链接」,无需修改任何选项,直接点击「保存更改」即可触发规则刷新。

2. 完善is_catalog()函数

原函数仅在条件满足时返回true,不满足时无返回值(默认返回null),这会导致if判断逻辑异常;同时使用get_query_var时建议指定默认值,避免未定义情况:

function is_catalog(){
    // 获取expage变量,默认值为false
    $expage = get_query_var('expage', false);
    // 严格匹配并返回布尔值
    return $expage === 'catalog';
}

或者直接通过全局$wp_query对象获取变量,兼容性更强:

function is_catalog(){
    global $wp_query;
    return isset($wp_query->query_vars['expage']) && $wp_query->query_vars['expage'] === 'catalog';
}

3. 确认函数调用时机

确保is_catalog()在WP_Query初始化完成后调用,比如:

  • 在主题模板文件(如header.php、page.php或自定义模板)中调用
  • 挂载到template_redirect这类较晚的钩子上执行,示例:
add_action('template_redirect', function(){
    if(is_catalog()){
        // 执行你的逻辑
    }
});

内容的提问来源于stack exchange,提问作者Stefan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:12:18