Как в WordPress красиво передать параметры пользовательскому шаблону (custom template) в адресной строке (т.е. методом GET)?

Добавьте в «function.php» следующий код:

add_action(''init'', ''rewrite_rules'');
function rewrite_rules(){
add_rewrite_tag(''%genre%'',''([^&]+)''); // Регистрируем параметр genre
add_rewrite_tag(''%country%'',''([^&]+)''); // // Регистрируем параметр country
add_rewrite_rule(''^films/([^/]*)/([^/]*)/?$'',''index.php?pagename=films&genre=$matches[1]&country=$matches[2]'',''top''); // Добавляем новое правило, 3-й параметр top говорит о том, что правило необходимо проверять первым.
}

Здесь мы с помощью регулярного выражения создали новое правило, которое мы поставили в соответствие с запросом адресной строки. Теперь если WordPress встретит в URL имя нашей страницы «films», а после неё будет идти косая черта и какая-то строка, то эта строка будет восприниматься как параметр «genre», а за следующей косой чертой будет «country». Доступ в нашем шаблоне к этим параметрам можно будет получить не через массив $_GET, а с помощью другого, специального массива $wp_query, содержащего параметры адресной строки.

Как работать с параметрами в шаблоне:

<php
// Template Name: My template name
if (isset($wp_query->query_vars[''genre''])&&isset($wp_query->query_vars[''country''])) { // Если оба параметра заданы
$genre = urldecode($wp_query->query_vars[''genre'']);
$country = urldecode($wp_query->query_vars[''country'']);
echo ''Жанр: '' . $genre . ''<br>'';
echo ''Страна: '' . $country;
}
?>

Возможно, после добавления этого кода потребуется зайти в меню настроек «Постоянные ссылки» и пересохранить их (просто нажать кнопку «Сохранить изменения»), чтобы начали действовать новые правила. Вот так.

Похожие вопросы
Добавить ответ
Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Нажимая кнопку «Отправить», я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности этого сайта.