Function ADD_REWRITE_TAG() in WordPress: Usage and Parameters

Функция 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 более читабельными для пользователей и поисковых систем.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *