get_page_template()
может быть переопределено через page_template
фильтр. Если ваш плагин представляет собой каталог с шаблонами в виде файлов в них, это просто вопрос передачи имен этих файлов. Если вы хотите создать их «на лету» (редактировать их в админке и сохранить их в базе данных?), Вы можете записать их в каталог кэша и ссылаться на них, или крюк в template_redirect
и сделать некоторые сумасшедшие eval()
вещи ,
Простой пример для плагина, который «перенаправляет» в файл в том же каталоге плагинов, если определенный критерий верен:
add_filter( 'page_template', 'wpa3396_page_template' );
function wpa3396_page_template( $page_template )
{
if ( is_page( 'my-custom-page-slug' ) ) {
$page_template = dirname( __FILE__ ) . '/custom-page-template.php';
}
return $page_template;
}
Переопределение
get_page_template()
это просто быстрый взлом. Он не позволяет выбирать шаблон на экране администратора, а плагин страницы жестко запрограммирован в плагине, поэтому у пользователя нет возможности узнать, откуда поступает шаблон.Предпочтительным решением было бы следовать этому руководству, которое позволяет зарегистрировать шаблон страницы в бэкэнде из плагина. Тогда он работает как любой другой шаблон.
источник
Да, это возможно. Я нашел этот пример плагина очень полезным.
Другой подход, который мне приходит в голову, - это использование WP Filesystem API для создания файла шаблона в теме. Я не уверен, что это лучший подход, но я уверен, что он работает!
источник
Ни один из предыдущих ответов не работал на мой. Здесь вы можете выбрать свой шаблон в админке Wordpress. Просто поместите его в основной файл плагина php и измените
template-configurator.php
по названию шаблонаисточник