Как создать страницу плагина налету
Этот пример показывает как создать страницу для плагина налету. За вывод такой страницы будет отвечать файл шаблона, который мы укажем сами. И для такой страницы не нужно создавать страницу в админ-панели.
Конечную точку будем добавлять для главной страницы.
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_action( '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()