Не могу заставить запрос переписать работать так, как ожидалось. Желаемый результат - запросы, идущие на 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