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

WordPress custom_rewrite_rule()失效问题求助

问题排查与解决方案

核心问题分析

你遇到的问题根源有三个:

  1. URL与重写规则不匹配:你的重写规则匹配的是^profile/([^/]+)/(\d+)/?(即Website.com/profile/Poul/21),但你实际访问的是Website.com/page/Poul/21,规则根本没有触发,导致WordPress解析到错误的变量值。
  2. 未注册自定义查询变量:WordPress默认不会识别name和age这类自定义查询参数,直接使用get_query_var可能无法正确获取值。
  3. 错误的规则刷新时机:将flush_rewrite_rules()放在init钩子中会导致每次页面加载都刷新规则,不仅影响性能,还可能引发规则冲突。

修复步骤与代码调整

  1. 修正重写规则匹配模式:根据你的访问URL需求,将规则改为匹配page/开头的路径;或者保持原规则,访问Website.com/profile/Poul/21。
  2. 注册自定义查询变量:通过query_vars钩子告诉WordPress允许使用name和age参数。
  3. 调整规则刷新时机:仅在主题激活时刷新规则,避免重复执行。

修改后的完整代码如下:

// 注册自定义查询变量
function custom_query_vars($vars) {
    $vars[] = 'name';
    $vars[] = 'age';
    return $vars;
}
add_filter('query_vars', 'custom_query_vars');

// 添加重写规则(根据你的URL需求二选一)
function custom_rewrite_rule() {
    // 选项1:匹配 page/xxx/xx 格式的URL
    add_rewrite_rule('^page/([^/]+)/(\d+)/?', 'index.php?page_id=104&name=$matches[1]&age=$matches[2]', 'top');
    
    // 选项2:匹配 profile/xxx/xx 格式的URL(原规则)
    // add_rewrite_rule('^profile/([^/]+)/(\d+)/?', 'index.php?page_id=104&name=$matches[1]&age=$matches[2]', 'top');
}
add_action('init', 'custom_rewrite_rule');

// 主题激活时刷新重写规则
function custom_flush_rewrite_rules() {
    custom_rewrite_rule();
    flush_rewrite_rules();
}
add_action('after_switch_theme', 'custom_flush_rewrite_rules');

// 短码回调函数
function display_profile_content() {
    $name = sanitize_text_field(get_query_var('name'));
    $age = intval(get_query_var('age'));

    echo 'Name: ' . $name . '<br>';
    echo 'Age: ' . $age . '<br>';
}
add_shortcode('profile_content', 'display_profile_content');

验证操作

  1. 将上述代码替换原functions.php中的对应内容并保存。
  2. 登录WordPress后台,进入设置→固定链接页面,无需修改任何设置,直接点击「保存更改」按钮,手动刷新重写规则。
  3. 根据你选择的规则选项,访问对应的URL:
    • 若选选项1:访问Website.com/page/Poul/21
    • 若选选项2:访问Website.com/profile/Poul/21

此时页面应正确显示:

Name: Poul
Age: 21

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:59:56