Функция add_rewrite_rule()
в WordPress позволяет добавлять новые правила перезаписи URL, что дает возможность создавать более чистые и понятные ссылки на страницы вашего сайта. Это особенно полезно для SEO и улучшения пользовательского опыта. В этой статье мы рассмотрим, как использовать add_rewrite_rule()
с примерами.
add_rewrite_rule( string $regex, string|array $query, string $after = 'bottom' )
Параметры:
- $regex (string): Регулярное выражение для сопоставления URL.
- $query (string|array): Соответствующие переменные запроса для этого правила.
- $after (string): Приоритет правила (может быть ‘top’ или ‘bottom’). По умолчанию ‘bottom’.
Функция позволяет добавлять дополнительные правила перезаписи для WordPress. Обычно используется вместе с add_rewrite_tag()
, что позволяет WordPress распознавать пользовательские переменные.
Пример 1: Простой ЧПУ
Создадим новое правило, которое будет обрабатывать запросы вида example.com/myparamname/value
, где value
— это значение, которое мы хотим передать.
- Добавление правила:
add_action('init', function() {
add_rewrite_rule('myparamname/([a-z0-9-]+)/?$', 'index.php?myparamname=$matches[1]', 'top');
});
- Обновление правил перезаписи: После добавления правила, нужно обновить настройки постоянных ссылок в админке: Настройки > Постоянные ссылки и просто нажмите «Сохранить изменения».
- Разрешение переменной:
add_filter('query_vars', function($vars) {
$vars[] = 'myparamname';
return $vars;
});
- Обработка запроса:
add_filter('template_include', function($template) {
if (get_query_var('myparamname') == false || get_query_var('myparamname') == '') {
return $template;
}
return get_template_directory() . '/my-custom-template.php';
});
Пример 2: ЧПУ с несколькими параметрами
Предположим, мы хотим создать страницу, которая будет отображать информацию о пользователе и его постах. URL будет выглядеть как example.com/user/john/posts/123
.
- Добавление правила:
add_action('init', function() {
add_rewrite_rule('^user/([^/]*)/posts/([0-9]+)/?$', 'index.php?username=$matches[1]&post_id=$matches[2]', 'top');
});
- Регистрация переменных:
add_filter('query_vars', function($vars) {
$vars[] = 'username';
$vars[] = 'post_id';
return $vars;
});
- Использование переменных:
В вашем шаблоне вы можете получить значения переменных с помощью:
$username = get_query_var('username');
$post_id = get_query_var('post_id');
Пример 3: Перенаправление на внешний скрипт
Иногда нужно перенаправлять на скрипт, отличный от index.php
. Для этого используем $1
вместо $matches[1]
.
- Добавление правила:
add_action('init', function() {
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?$', 'path/to/script.php?food=$1&variety=$2', 'top');
});
Важные моменты
- Не забудьте сбросить правила перезаписи после их изменения. Это можно сделать через админку в разделе «Настройки > Постоянные ссылки».
- Если вы добавляете несколько правил, учитывайте, что они обрабатываются в порядке добавления. Это значит, что более специфические правила должны быть добавлены перед менее специфичными.
Заключение
Функция add_rewrite_rule()
в WordPress открывает множество возможностей для создания чистых и понятных URL. Это не только улучшает SEO, но и делает ваш сайт более удобным для пользователей. Надеемся, этот обзор и примеры помогут вам интегрировать правила перезаписи в ваш проект!