@noxiconum

Где хранятся в базе настройки rewrite_rules?

function do_rewrite(){
    // Правило перезаписи
	$ref_p="http://сайт/названиестраницы/";
    add_rewrite_rule( $ref_p.'([^/]*)/([^/]*)/?', $ref_p.'/?param1=$matches[1]&param2=$matches[2]', 'top' );

}
add_action('init', 'do_rewrite');`


Добавил данное правило в файл шаблона function.php

Сохранил из админки настройки пермалинков. Но правило не срабатывает.

Пытаюсь открыть http://сайт/названиестраницы/3/25

Где 3 - param1, 25 - param2

Где можно в базе посмотреть прописалось ли правило?
  • Вопрос задан
  • 228 просмотров
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
https://wordpress.org/plugins/rewrite-rules-inspec... вот так можно проверить правила

function do_rewrite(){
    // Правило перезаписи
  $ref_p="названиестраницы";
//p_id = 88 - id страницы названиестраницы
    add_rewrite_rule( '^' . $ref_p . '/([^/]*)/([^/]*)/?', 'index.php?p=88&param1=$matches[1]&param2=$matches[2]', 'top' );
add_filter( 'query_vars', function( $vars ){
        $vars[] = 'param1';
        $vars[] = 'param2';
        return $vars;
    } );
}
add_action('init', 'do_rewrite');`


Затем обновить правила перезаписи
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Defman21
@Defman21
Потому что $matches (как и любая другая переменная) не работают в одинарных (') скобках. Используй ".
Ответ написан
Ваш ответ на вопрос

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

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