add_rewrite_rule()

Добавляет правило перезаписи, которое преобразует структуру URL в набор переменных запроса
Функция WordPress
INT 2.1.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Преобразование URL-структуры в запросы с помощью add_rewrite_rule()
  4. Создание пользовательских правил перезаписи с помощью add_rewrite_rule()
  5. Настройка дополнительных параметров с помощью add_rewrite_rule()
  6. Приоритет нового правила с помощью add_rewrite_rule()
  7. Добавление правила перезаписи в начало списка с помощью add_rewrite_rule()
  8. Вопросы и ответы
  9. Как добавить правило перезаписи в WordPress?
  10. Как задать регулярное выражение для правила перезаписи в WordPress?
  11. Как указать соответствующие query vars для правила перезаписи в WordPress?
  12. Как изменить приоритет правила перезаписи в WordPress?
  13. Как удалить правило перезаписи в WordPress?
  14. Как проверить, существует ли уже правило перезаписи в WordPress?
  15. Как обновить правило перезаписи в WordPress?
  16. Как использовать функцию add_rewrite_rule() для создания красивых URL-адресов в WordPress?
  17. Как создать правило перезаписи для поддержки многоязычности в WordPress?
  18. Связанные элементы

Описание функции

Функция add_rewrite_rule() добавляет правило перезаписи, которое преобразует структуру URL в набор переменных запроса. Она позволяет определить пользовательские правила перезаписи для обработки URL-адресов на основе определенных шаблонов.

Когда WordPress получает запрос, она проверяет его против правил перезаписи, определенных с помощью этой функции, и преобразует URL-адрес в набор переменных запроса, которые затем используются для определения контента, который должен быть отображен.

Использование

add_rewrite_rule( string $regex, string|array $query, string $after = 'bottom' )

Функция add_rewrite_rule() принимает три параметра:

  • $regex (обязательный): Регулярное выражение, с которым будет сопоставляться запрос.
  • $query (обязательный): Соответствующие переменные запроса для этого правила перезаписи. Может быть строкой или массивом.
  • $after (необязательный): Приоритет нового правила. Принимает значения ‘top’ или ‘bottom’. По умолчанию установлено значение ‘bottom’.

add_rewrite_rule(
    '^products/([^/]+)/?$',
    'index.php?product=$matches[1]',
    'top'
);

В этом примере мы добавляем правило перезаписи, которое преобразует URL-адрес вида example.com/products/{product-slug} в запрос index.php?product={product-slug}. Регулярное выражение ^products/([^/]+)/?$ сопоставляется с URL-адресом, содержащим «products» в начале, за которым следует сегмент переменной {product-slug}. Переменная запроса $matches[1] содержит значение сегмента переменной {product-slug}.

Примеры использования

Преобразование URL-структуры в запросы с помощью add_rewrite_rule()


/**
 * Пример использования функции add_rewrite_rule() для преобразования URL-структуры в запросы.
 */
function custom_rewrite_rule() {
    // Шаблон URL-структуры для сопоставления
    $regex = '^products/([^/]+)/?$';
    
    // Соответствующие query vars для данного правила
    $query = 'index.php?product=$matches[1]';
    
    // Добавление правила перезаписи
    add_rewrite_rule($regex, $query);
}
add_action('init', 'custom_rewrite_rule');

Создание пользовательских правил перезаписи с помощью add_rewrite_rule()


/**
 * Пример использования функции add_rewrite_rule() для создания пользовательских правил перезаписи.
 */
function custom_rewrite_rule() {
    // Шаблон URL-структуры для сопоставления
    $regex = '^news/([^/]+)/?$';
    
    // Соответствующие query vars для данного правила
    $query = 'index.php?news=$matches[1]';
    
    // Добавление правила перезаписи
    add_rewrite_rule($regex, $query);
}
add_action('init', 'custom_rewrite_rule');

Настройка дополнительных параметров с помощью add_rewrite_rule()


/**
 * Пример использования функции add_rewrite_rule() для настройки дополнительных параметров.
 */
function custom_rewrite_rule() {
    // Шаблон URL-структуры для сопоставления
    $regex = '^products/([^/]+)/?$';
    
    // Соответствующие query vars для данного правила
    $query = 'index.php?product=$matches[1]';
    
    // Приоритет нового правила
    $after = 'top';
    
    // Добавление правила перезаписи с настройками
    add_rewrite_rule($regex, $query, $after);
}
add_action('init', 'custom_rewrite_rule');

Приоритет нового правила с помощью add_rewrite_rule()


/**
 * Пример использования функции add_rewrite_rule() для установки приоритета нового правила.
 */
function custom_rewrite_rule() {
    // Шаблон URL-структуры для сопоставления
    $regex = '^products/([^/]+)/?$';
    
    // Соответствующие query vars для данного правила
    $query = 'index.php?product=$matches[1]';
    
    // Приоритет нового правила
    $after = 'top';
    
    // Добавление правила перезаписи с приоритетом
    add_rewrite_rule($regex, $query, $after);
}
add_action('init', 'custom_rewrite_rule');

Добавление правила перезаписи в начало списка с помощью add_rewrite_rule()


/**
 * Пример использования функции add_rewrite_rule() для добавления правила перезаписи в начало списка.
 */
function custom_rewrite_rule() {
    // Шаблон URL-структуры для сопоставления
    $regex = '^products/([^/]+)/?$';
    
    // Соответствующие query vars для данного правила
    $query = 'index.php?product=$matches[1]';
    
    // Приоритет нового правила
    $after = 'top';
    
    // Добавление правила перезаписи в начало списка
    add_rewrite_rule($regex, $query, $after);
}
add_action('init', 'custom_rewrite_rule');

Вопросы и ответы

Как добавить правило перезаписи в WordPress?

Для добавления правила перезаписи в WordPress используется функция add_rewrite_rule(). Она позволяет преобразовать структуру URL в набор переменных запроса.

Как задать регулярное выражение для правила перезаписи в WordPress?

Регулярное выражение для правила перезаписи задается в качестве первого параметра функции add_rewrite_rule(). Оно должно соответствовать запросу, который нужно перезаписать.

$regex = '^products/([^/]+)/?$';

Как указать соответствующие query vars для правила перезаписи в WordPress?

Соответствующие переменные запроса (query vars) для правила перезаписи указываются вторым параметром функции add_rewrite_rule(). Они определяют, какие данные будут переданы в WordPress для обработки запроса.

$query = 'index.php?product=$matches[1]';

В итоге, чтобы добавить правило перезаписи в WordPress, нужно использовать функцию add_rewrite_rule(), передавая в нее регулярное выражение и соответствующие query vars. Например:

$regex = '^products/([^/]+)/?$';
$query = 'index.php?product=$matches[1]';
add_rewrite_rule($regex, $query);

Как изменить приоритет правила перезаписи в WordPress?

Иногда возникает необходимость изменить приоритет правила перезаписи в WordPress. Это можно сделать с помощью параметра $after функции add_rewrite_rule().

По умолчанию, новое правило добавляется в конец списка правил, то есть имеет приоритет «bottom». Если нужно, чтобы правило было обработано раньше других, можно указать параметр $after со значением «top».

Например, если у нас есть два правила перезаписи, и мы хотим, чтобы новое правило имело более высокий приоритет, мы можем использовать следующий код:


add_rewrite_rule( 'news/([^/]+)/?', 'index.php?category_name=$matches[1]', 'top' );

В этом примере, правило перезаписи для URL-адресов, начинающихся с «news/», будет обработано раньше, чем другие правила.

Как удалить правило перезаписи в WordPress?

Иногда возникает необходимость удалить правило перезаписи в WordPress. Для этого можно использовать функцию remove_rewrite_rule().

Например, если у нас есть правило перезаписи для URL-адресов, соответствующих определенному шаблону, и мы хотим удалить это правило, мы можем использовать следующий код:


remove_rewrite_rule( 'news/([^/]+)/?' );

В этом примере, правило перезаписи для URL-адресов, начинающихся с «news/», будет удалено.

Как проверить, существует ли уже правило перезаписи в WordPress?

Иногда возникает необходимость проверить, существует ли уже правило перезаписи в WordPress. Для этого можно использовать функцию add_rewrite_rule().

Например, если у нас есть правило перезаписи для URL-адресов, соответствующих определенному шаблону, и мы хотим проверить, существует ли оно, мы можем использовать следующий код:


if ( !add_rewrite_rule( 'news/([^/]+)/?', 'index.php?category_name=$matches[1]' ) ) {
    echo 'Правило перезаписи уже существует!';
}

В этом примере, мы проверяем, существует ли уже правило перезаписи для URL-адресов, начинающихся с «news/». Если правило уже существует, выводится сообщение «Правило перезаписи уже существует!».

Как обновить правило перезаписи в WordPress?

Для обновления правила перезаписи в WordPress используется функция add_rewrite_rule(). Она позволяет изменить структуру URL и преобразовать ее в набор переменных запроса.

Для обновления правила перезаписи необходимо передать три параметра в функцию add_rewrite_rule():

  • $regex — обязательный параметр, содержащий регулярное выражение для сопоставления с запросом.
  • $query — обязательный параметр, указывающий соответствующие переменные запроса для данного правила перезаписи.
  • $after — необязательный параметр, определяющий приоритет нового правила. Может принимать значения ‘top’ или ‘bottom’. По умолчанию установлено значение ‘bottom’.

Как использовать функцию add_rewrite_rule() для создания красивых URL-адресов в WordPress?

Функция add_rewrite_rule() позволяет создавать красивые URL-адреса в WordPress. Для этого необходимо указать регулярное выражение, которое будет сопоставляться с запросом, и соответствующие переменные запроса.

Пример использования функции add_rewrite_rule() для создания красивого URL-адреса:


function custom_rewrite_rule() {
  add_rewrite_rule('^products/([^/]+)/?', 'index.php?product=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_rule');

В данном примере, при обращении к URL-адресу вида http://example.com/products/product-name/, WordPress будет обрабатывать запрос и передавать значение переменной product в глобальный массив $wp_query.

Как создать правило перезаписи для поддержки многоязычности в WordPress?

Функция add_rewrite_rule() также может быть использована для создания правила перезаписи, поддерживающего многоязычность в WordPress.

Пример использования функции add_rewrite_rule() для создания правила перезаписи с поддержкой многоязычности:


function multilingual_rewrite_rule() {
  add_rewrite_rule('^en/products/([^/]+)/?', 'index.php?lang=en&product=$matches[1]', 'top');
  add_rewrite_rule('^fr/produits/([^/]+)/?', 'index.php?lang=fr&product=$matches[1]', 'top');
}
add_action('init', 'multilingual_rewrite_rule');

В данном примере, при обращении к URL-адресу вида http://example.com/en/products/product-name/, WordPress будет обрабатывать запрос и передавать значение переменных lang и product в глобальный массив $wp_query. Аналогично, для URL-адреса http://example.com/fr/produits/nom-du-produit/ будут переданы значения lang=fr и product=nom-du-produit.

Функция add_rewrite_rule() является мощным инструментом для обновления правил перезаписи в WordPress. Она позволяет создавать красивые URL-адреса и поддерживать многоязычность на сайте. Используйте эту функцию для достижения более гибкой настройки URL-адресов и улучшения пользовательского опыта.

Связанные элементы

  • Функция add_rewrite_tag(): добавляет новый тег для использования в правилах перезаписи.
  • Функция add_rewrite_endpoint(): добавляет новый конечный пункт для использования в правилах перезаписи.
  • Функция add_permastruct(): добавляет новую структуру постоянных ссылок для указанного типа записи.
  • Функция add_feed(): регистрирует новую ленту для указанного типа записи.
  • Хук rewrite_rules_array: позволяет изменять массив правил перезаписи перед его использованием.
  • Хук generate_rewrite_rules: позволяет добавлять дополнительные правила перезаписи.
Обсуждение