add_rewrite_endpoint() WP 2.1.0
Добавляет конечную точку, например /trackback/
. Добавляются дополнительные правила перезаписи ЧПУ с указанной конечной точкой.
При добавлении конечной точки в ЧПУ, добавляются дополнительные правила перезаписи URL для каждого типа URL указанного во втором параметре $places
? это может быть: пост, страница, рубрика, автор, поиск. Например:
add_rewrite_endpoint( 'json', EP_PERMALINK | EP_PAGES );
Добавит новое правило оканчивающееся на json(/(.*))?/?$ для каждой структуры ЧПУ, которая описывает ЧПУ постов или постоянных страниц. Итоговый параметр запроса будет выглядеть так: [базовые параметры]&json=$match, где $match
- это частью ЧПУ следующая за конечной точкой. Например если ссылка такая: [permalink]/json/foo/ то $match будет foo, а запрос такой [параметры permalink]?json=foo.
Функция также добавляет название конечной точки ( из примера json
) в белый список переменных запроса.
При указании параметра $places, убедитесь что вы используете рабочую константу типа EP_* (можно использовать несколько параметров через |).
Для внесения изменений не забывайте сбрасывать правила, с помощью flush_rewrite_rules() при активации/деактивации плагина. Или, для сброса, можно зайти в настройки постоянных ссылок в админке и просто обновиться...
WP_Rewrite::add_endpoint()
Хуков нет.
Возвращает
null. Ничего.
Использование
add_rewrite_endpoint( $name, $places, $query_var );
- $name(строка) (обязательный)
- Название конечной точки.
- $places(число) (обязательный)
Место куда конечная точка должна быть добавлена. Названия мест - маски конечных точек для:
- EP_NONE - по дефолту - не относится ни к чему
- EP_PERMALINK - постоянных ссылок постов
- EP_ATTACHMENT - вложений
- EP_DATE - даты
- EP_YEAR - года
- EP_MONTH - месяца
- EP_DAY - дня
- EP_ROOT - корня (root)
- EP_COMMENTS - комментариев
- EP_SEARCH - поиска
- EP_CATEGORIES - рубрик
- EP_TAGS - меток
- EP_AUTHORS - авторов
- EP_PAGES - постоянных страниц
- EP_ALL_ARCHIVES - архивов: EP_DATE | EP_YEAR | EP_MONTH | EP_DAY | EP_CATEGORIES | EP_TAGS | EP_AUTHORS
- EP_ALL - всего сразу: EP_PERMALINK | EP_ATTACHMENT | EP_ROOT | EP_COMMENTS | EP_SEARCH | EP_PAGES | EP_ALL_ARCHIVES
- $query_var(строка/логический)
- Название переменной запроса для этой конечной точки, по умолчанию равно названию конечной точки (параметру $name). Укажите false, чтобы функция не добавляла переменную запроса.
По умолчанию: true
Примеры
#1 Добавим конечную точку для ЧПУ постов и страниц
add_action( 'init', 'add_my_endpoint' ); function add_my_endpoint() { add_rewrite_endpoint( 'json', EP_PERMALINK | EP_PAGES ); }
#2 Добавим ЧПУ для страницы плагина во фронте
Конечную точку будем добавлять для главной страницы.
add_action( 'init', 'add_my_endpoint' ); function add_my_endpoint(){ add_rewrite_endpoint( 'myplug-page', EP_ROOT ); }
Теперь, нужно сбросить ЧПУ и у нас будет работать URL вида: site.ru/myplug-page
или site.ru/myplug-page/параметр_запроса
.
Далее, на странице типа is_front_page()
мы сможем получить параметр запроса так:
$var = get_query_var('myplug-page')
Для такой страницы хорошо бы сбросить параметры основного запроса, чтобы не тратить ресурсы на запрос, который мы все равно не используем. В данном случае запрос получает все последние записи.
Если страница создается для плагина, то для нее нужно создать отдельный шаблон. Код шаблона можно взять из файла отвечающего за вывод статической страницы - page.php
. Или сразу подключать этот файл через фильтр template_include. Далее, нужно как-то выводить контент страницы, который можно повесить на хук the_content, однако не факт что этот хук сработает, после изменения параметров запроса.