Перезапись запроса с параметром URL - PullRequest
0 голосов
/ 14 апреля 2019

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

1 Ответ

1 голос
/ 14 апреля 2019

Это было решено путем изменения $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' );

И, конечно, очистка кеша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...