使用 WordPress 重写规则然后使用 get_query_var 访问参数时出现问题

Issues when using WordPress rewrite rules then accessing parameter using get_query_var

我正在开发一个 WP 插件并有一个 WordPress URL:

(例如:http://localhost/testsite1/coder/?id=66),

并尝试将重写规则添加到

http://localhost/testsite1/coder/66/

使用以下规则:

function add_mypage_rule(){
    add_rewrite_rule(
        '^coder/([0-9]+)',
        'index.php?id=$matches',
        'top'
    );
}

add_action('init', 'add_mypage_rule');

我已经使用以下方法注册了一个 WP 查询变量:

add_filter('query_vars', 'registering_custom_query_var');

function registering_custom_query_var($query_vars){
    $query_vars[] = 'id';
    return $query_vars;
}

但是在 URL http://localhost/testsite1/coder/66/ 时,当我 运行 编码时

echo get_query_var('id');

什么都不显示

但是当在 URL http://localhost/testsite1/coder/?id=66 时,echo 语句将显示 66.

我的重写规则有什么问题导致 echo get_query_var('id'); 无法访问参数并显示 66?

  1. 当你使用add_rewrite_rule函数时,第一个参数是正则表达式。正确的?当您将常规 expression/pattern 括在括号中时,您正在对表达式进行分组,这意味着您可以像这样在括号中访问捕获的组:id=$matches[1].
  • 正则表达式^coder/([0-9]+)
  • 在第一个捕获的组中访问它(因为id在第一个括号中),id=$matches[1]
add_action('init', 'add_mypage_rule');

function add_mypage_rule()
{
    add_rewrite_rule(
        '^coder/([0-9]+)',
        'index.php?id=$matches[1]',
        'top'
    );
}
  1. 之后,刷新永久链接并通过导航重写规则:
    Settings > Permalinks > Click on the 'Save changes' button at the bottom of the page!

从理论上讲,现在它应该可以工作了,除非您在问题中没有提到更多细节!