#php #wordpress #.htaccess #mod-rewrite
#php #wordpress #.htaccess #мод-перезапись
Вопрос:
Я прошу прощения за этот простой вопрос, на который, несомненно, отвечали бесчисленное количество раз на этом сайте, но я не могу понять, почему мое правило перезаписи не вступает в силу.
Вот мой код:
add_action('init', 'update_rewrite_rules');
function update_rewrite_rules(){
add_rewrite_rule('^org/([^/] )', 'index.php?pagename=about-usamp;org=$matches[1]', 'top');
add_rewrite_tag('%org%', '[0-9] ');
}
Насколько я понимаю, это должно преобразовать «myurl.com/org/13 » чтобы «myurl.com/index.php?pagename=about-suamp;org=13 «. Что я делаю не так???
Я могу записать его в файл .htaccess просто отлично, но, конечно, я сталкиваюсь с проблемой того, что пользовательская функция перезаписи PHP WordPress заменяет мой код, поэтому найдена только переменная, но не страница.
В любом случае, любые советы или вопросы для размышления будут оценены! Спасибо.
Ответ №1:
Я считаю, что вам нужно зарегистрировать переменную запроса перед фактическим правилом перезаписи. Кроме того, как указано в WordPress Rewrite API, он распознает новые правила только после их очистки и восстановления кэша.
//Ensure the $wp_rewrite global is loaded
global $wp_rewrite;
//Call flush_rules() as a method of the $wp_rewrite object
$wp_rewrite->flush_rules();
Обратите внимание, что по соображениям производительности вы не должны делать это каждый запрос, только при активации вашего плагина.
add_action('admin_init', 'flush_rewrite_rules');
Существует также другой способ добавления пользовательских правил перезаписи, как описано в пользовательских вопросах.