Как создать страницу плагина налету
Этот пример показывает как создать страницу для плагина налету. За вывод такой страницы будет отвечать файл шаблона, который мы укажем сами. И для такой страницы не нужно создавать страницу в админ-панели.
Конечную точку будем добавлять для главной страницы.
add_action( 'init', 'add_my_endpoint' );
function add_my_endpoint(){
add_rewrite_endpoint( 'myplug-page', EP_ROOT );
}
Теперь, нужно сбросить ЧПУ и у нас будет работать URL вида:
example.com/myplug-page.- или
example.com/myplug-page/параметр_запроса.
Для такой страницы хорошо бы сбросить параметры основного запроса, чтобы не тратить ресурсы на запрос, который мы все равно не используем. В данном случае запрос получает все последние записи.
Сделать это можно например так:
// урезаем основной запрос для главной страницы сайта, чтобы он не создавал ненужную нагрузку.
add_filter( 'posts_clauses_request', 'skip_main_query_for_myplugpage', 10, 2 );
function skip_main_query_for_myplugpage( $pieces, $wp_query ){
if( isset( $wp_query->query['myplug-page'] ) && $wp_query->is_main_query() ){
$pieces['where'] = ' AND ID = 0';
}
return $pieces;
}Создаем шаблон страницы
На странице типа is_front_page() мы можем получить параметр запроса так:
$var = get_query_var( 'myplug-page' );
Обработать запрос и подключить файл шаблона можно через хук template_include.
add_filter( 'template_include', 'myplugpage_template_file', 20 );
function myplugpage_template_file( $template ) {
global $wp_query;
// наш запрос
if ( isset( $wp_query->query['myplug-page'] ) ) {
$template = __DIR__ . '/path/to/myplug-page-template.php';
}
return $template;
}
—
Заметка встроена в: add_rewrite_endpoint()