@TheMarser

Как создать rewrite rule в Wordpress?

Здравствуйте! Требуется создать rewrite rule в плагине. Пытаюсь понять, как это работает, написал такой код:
add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $vars ) {
    $vars[] = 'my_param';
    return $vars;
}

add_action( 'generate_rewrite_rules', 'add_my_rules' );
function add_my_rules() {
        add_rewrite_rule( 'my_param/(\d+)?$', 'index.php?my_param=$matches[1]', 'top' );
}

add_action('wp', "test_cm");
function test_cm(){
	$my_param_value = get_query_var('my_param');
	echo $my_param_value;
}

Но этот код не работает. Подскажите, пожалуйста, чем может быть ошибка?
  • Вопрос задан
  • 4934 просмотра
Решения вопроса 1
@webpixel
есть же пример в CODEX, по-моему, наглядный:
function custom_rewrite_basic() {
  add_rewrite_rule('^leaf/([0-9]+)/?', 'index.php?page_id=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_basic');


также добавьте в Ваш плагин "сброс правил":
https://codex.wordpress.org/Function_Reference/flu...

или попробуй на странице настроек "Permalinks" сохранить настройки 1-2 раза и проверьте срабатывают ли Ваши правила.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mr_ko
Javascript, Node.js. React.js, Vue.js, Wordpress
Попробуйте после add_rewrite_rule добавить flush_rewrite_rules() и в админке выключить и включить ЧПУ
И чтобы быть уверенным что все работает код
$my_param_value = get_query_var('my_param');
  echo $my_param_value;

вставьте в файл header.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы