Как использовать выделенный шаблон для пользовательского типа публикации из плагина?
Я работаю над этим учебным пособием по пользовательским типам сообщений (в плагине), в котором автор демонстрирует, как принудительно использовать выделенный шаблон для пользовательского типа сообщений . Автор заявляет таким образом:
Код (ниже) выполняет поиск шаблона
single-movie-reviews.php
в текущем каталоге тем. Если он не найден, то он ищет шаблон в каталоге плагинов, который мы предоставляем как часть плагина. Крючок template_include был используется для изменения поведения по умолчанию и применения определенного шаблона.
Шаг 1: Добавил этот код в мой файл plugin-name.php
add_filter( 'template_include', 'include_reviews_template', 1 );
function include_reviews_template(){
if ( get_post_type() == 'reviews' ) {
if ( is_single() ) {
// checks if the file exists in the theme first,
// otherwise serve the file from the plugin
if ( $theme_file = locate_template( array( 'single-movie-reviews.php' ) ) ) {
$template_path = $theme_file;
} else {
$template_path = plugin_dir_path( __FILE__ ) . '/templates/single-movie-reviews.php';
}
}
}
return $template_path;
}
Шаг 2: Создайте файл.php с одним {пользовательским типом записи}.
Затем я создал необходимый файл single-movie-reviews.php
и добавил его в каталог '/my-plugin/templates/'
.
Автор добавляет следующее:
Примечание: Вам необходимо создать новую страницу на панели мониторинга , используя только что созданную шаблон.
Проблемы
- Шаблон страницы НЕ отображается на панели мониторинга
- Когда я посетил сообщение, созданное с использованием пользовательского типа сообщения, оно показывает сообщение с использованием шаблона страницы из плагина. Однако... каждая вторая страница (т.Е. страницы , НЕ использующие CPT) теперь показывают пустой белый экран (как будто он не может найти подходящий шаблон для использования).
Ну и что я поступаю неправильно?
Пожалуйста, сообщите
1 answers
Измените эту строку:
function include_reviews_template(){
К этому:
function include_reviews_template( $template_path ) {
Когда get_post_type() == 'reviews'
равно false, вы возвращаете неустановленную переменную ($template_path
). Это изменение должно отправить значение, переданное функции WordPress.