Функция ADD_REWRITE_TAG() в WordPress
Функция add_rewrite_tag() позволяет добавить новую метку для перезаписи URL, например, %postname%. Это может быть полезно для создания дружелюбных (читаемых) адресов на вашем сайте.
Параметры функции
- $tag (string): Название новой метки (обязательный параметр).
- $regex (string): Регулярное выражение для замены метки в правилах перезаписи (обязательный параметр).
- $query (string): Строка, которую будет иметь переработанный запрос. Должна заканчиваться знаком
=. (необязательный параметр, по умолчанию пустая строка).
Возвращаемое значение
Функция не возвращает ничего (null).
Использование функции
Для работы с функцией используйте следующий синтаксис:
add_rewrite_tag( $tag, $regex, $query );
Пример использования
Регистрация новой переменной запроса в WordPress
В этом примере мы регистрируем тег запроса pagetype:
add_action('init', 'rewrite_rule_my');
function rewrite_rule_my(){
add_rewrite_tag( '%pagetype%', '([^&]+)' );
}
Этот шаг необходим, когда правило перезаписи создается с помощью функции add_rewrite_rule(). Обычно такие правила создаются для статических страниц с уникальными шаблонами.
Получение значений переменных запроса
Значение переменной запроса из перезаписанного URL можно получить через объект $wp_query. Например, если у нас есть ссылка sitemap?pagetype=pages, и мы задали правило перезаписи, ссылка станет sitemap/pages. Теперь, чтобы получить правильное значение pages и убедиться, что оно ссылается именно на переменную запроса pagetype, в шаблоне можно использовать:
get_query_var('pagetype');
или
global $wp_query;
$wp_query->query_vars['pagetype'];
Обратите внимание, что невозможно получить параметр $_GET, когда используется дружелюбный URL. То есть, когда у вас адрес /sitemap/pages, значение $_GET['pagetype'] будет пустым.
Подсказки
- Глобальные переменные:
$wp_rewrite: Компонент перезаписи WordPress.$wp: Текущий экземпляр среды WordPress.
Изменения
- Введена в версии 2.1.0.
Код функции ADD_REWRITE_TAG()
function add_rewrite_tag( $tag, $regex, $query = '' ) {
// Проверяем имя метки.
if ( strlen( $tag ) < 3 || '%' !== $tag[0] || '%' !== $tag[ strlen( $tag ) - 1 ] ) {
return;
}
global $wp_rewrite, $wp;
if ( empty( $query ) ) {
$qv = trim( $tag, '%' );
$wp->add_query_var( $qv );
$query = $qv . '=';
}
$wp_rewrite->add_rewrite_tag( $tag, $regex, $query );
}
Теперь вы имеете базовое понимание функции add_rewrite_tag() и того, как регистрировать новые теги для перезаписи в WordPress. Используйте эту функцию, чтобы сделать свои URL более читабельными для пользователей и поисковых систем.