Описание
Позволяет указать дополнительные правила перезаписи УРЛов.
Обычно add_rewrite_rule() используется в связке с add_rewrite_tag(), которая помогает WordPress распознавать параметры GET запроса (переменные).
Функция ничего не возвращает
Использование
<?php add_rewrite_rule($rule, $rewrite, $position); ?>
Параметры
- $rule (строка) (обязательный)
- Регулярное выражение, которому должна соответствовать ссылка (УРЛ). В регулярке можно использовать одну или несколько групп (()).
По умолчанию: нет - $rewrite (строка) (обязательный)
- Соответствующая регулярке ссылка, которая будет работать для WordPress, ссылка с параметрами запроса. Можно использовать массив $matches[], чтобы получить значения групп регулярки.
По умолчанию: нет - $position (строка)
- Позиция проверки. Может быть top и bottom. top - значит это правило будет проверяться первым.
По умолчанию: 'bottom'
Примеры
1. Постоянная страница с ЧПУ
Представим что мы создаем страницу "питание" (nutrition, ID=12) для отображения на ней различной информации о питании. Далее, эта страница использует отдельный шаблон в котором используются переменные запроса food и variety.
Теперь, вместо некрасивых УРЛов, с параметрами запроса, типа: /nutrition?food=kasha&variety=manka, можно создать правило перезаписи и писать красивые УРЛы вида: /nutrition/kasha/manka. Делается это так:
add_action('init', 'do_rewrite');
function do_rewrite(){
add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?p=12&food=$matches[1]&variety=$matches[2]','top');
}
ЗАМЕТКА: при использовании $matches[], ключи массива начинаются с 1, а не 0.
ВАЖНО: По умолчанию WordPress не распознает новые переменные запроса, используемые для перезаписи. Для этого нужно их зарегистрировать при помощи функции add_rewrite_tag(), если этого не сделать, правило перезаписи работать не будет.
ВАЖНО: Чтобы новое правило перезаписи начало работать, нужно обновить все правила в Базе Данных! Сделать это можно вызвав функцию flush_rules() или зайдя в "настройки -> постоянные ссылки" и просто пересохранив настройки.
1.1. полный пример создания ЧПУ для постоянной страницы.
Теперь, приведу полный пример создания ЧПУ для постоянной страницы. Сначала код, потом все остальное:
/* Правило перезаписи для страницы sitemap
------------------------------------------------------------ */
add_action('init', 'rewrite_rule_my');
function rewrite_rule_my(){
add_rewrite_tag('%pagetype%', '([^&]+)');
add_rewrite_rule('^(sitemap)/([^/]*)/?', 'index.php?pagename=$matches[1]&pagetype=$matches[2]', 'top');
}
Как вы догадались по коду, ЧПУ мы создавали для постоянной страницы /sitemap?pagename=value (pagename - переменная запроса). После того, как мы разместим этот код в functions.php у нас будет работать ЧПУ вида: /sitemap/value и в PHP можно будет использовать переменную $wp_query->query_vars['pagetype'];, которая будет содержать в себе значение value.
Все, дальнейшие объяснения не лаконичны 
2. Дружелюбная ссылка входа
Пример того как можно сделать ссылку на страницу входа более дружелюбной, т.е. сделать так, что если мы напишем в строку браузера http://site.ru/login нас перекинет на страницу входа http://site.ru/wp-login.php:
/* редирект с /login на /wp-login.php */
function wp_pretty_login() {
add_rewrite_rule( 'login$', 'wp-login.php', 'top' );
}
add_action('init', 'wp_pretty_login');
В этом примере происходит полный редирект, видимо, потому что перенаправляем не на index.php.
add_rewrite_rule()
из файла: /wp-includes/rewrite.php WP 3.3.2function add_rewrite_rule($regex, $redirect, $after = 'bottom') {
global $wp_rewrite;
$wp_rewrite->add_rule($regex, $redirect, $after);
}Связанные Функции
Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.
Каждый из нас когда видит что-то приятное и красивое, необычное и загадочное, интересное и завораживающее сразу хочет это иметь у себя. Особенно ярко эта черта характера проявляется у детей. Одной из таких вещиц являются нео шарики — прикольные и оригинальные штуки из разных материалов, которые не оставят равнодушным никого.