我无法使查询重写按预期工作。理想的结果是将前往wpsite.com/foo/bar/2/
的请求重写为wpsite.com/foo/bar/?my_id=2
。
functions.php
// Add custom URL parameters
function add_custom_query_var( $vars ){
$vars[] = "my_id";
return $vars;
}
add_filter( 'query_vars', 'add_custom_query_var' );
// Add rewrite for my_id
function custom_rewrite_basic()
{
add_rewrite_rule('^foo/bar/([0-9]+)/?', 'foo/bar/?my_id=$matches[1]', 'top');
}
add_action( 'init', 'custom_rewrite_basic' );
bar.php
$my_id = filter_input( INPUT_GET, "my_id", FILTER_SANITIZE_NUMBER_INT );
var_dump($my_id);
当我致电/foo/bar/?my_id=2
时看到2
,当我使用/foo/bar/2/
时却没有。
更新
刷新缓存后,结果得到改善。但是,无论传递了参数(3
,256205
),$my_id
都以1
的形式返回。
wpsite.com/foo/bar/?my_id=2
显示2
wpsite.com/foo/bar/2/
显示1
答案 0 :(得分:1)
此问题通过将$matches[1]
更改为$1
来解决:
// Add rewrite for my_id
function custom_rewrite_basic()
{
add_rewrite_rule('^foo/bar/([0-9]+)/?', 'foo/bar/?my_id=$1', 'top');
}
add_action( 'init', 'custom_rewrite_basic' );
当然还有刷新缓存。