使用 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?
- 当你使用
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'
);
}
- 之后,刷新永久链接并通过导航重写规则:
Settings > Permalinks > Click on the 'Save changes' button at the bottom of the page!
从理论上讲,现在它应该可以工作了,除非您在问题中没有提到更多细节!
我正在开发一个 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?
- 当你使用
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'
);
}
- 之后,刷新永久链接并通过导航重写规则:
Settings > Permalinks > Click on the 'Save changes' button at the bottom of the page!
从理论上讲,现在它应该可以工作了,除非您在问题中没有提到更多细节!