Как использовать выделенный шаблон для пользовательского типа публикации из плагина?


Я работаю над этим учебным пособием по пользовательским типам сообщений (в плагине), в котором автор демонстрирует, как принудительно использовать выделенный шаблон для пользовательского типа сообщений . Автор заявляет таким образом:

Код (ниже) выполняет поиск шаблона 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/'.

Автор добавляет следующее:

Примечание: Вам необходимо создать новую страницу на панели мониторинга , используя только что созданную шаблон.

Проблемы

  1. Шаблон страницы НЕ отображается на панели мониторинга
  2. Когда я посетил сообщение, созданное с использованием пользовательского типа сообщения, оно показывает сообщение с использованием шаблона страницы из плагина. Однако... каждая вторая страница (т.Е. страницы , НЕ использующие CPT) теперь показывают пустой белый экран (как будто он не может найти подходящий шаблон для использования).

Ну и что я поступаю неправильно?

Пожалуйста, сообщите

Author: sleeper, 2013-09-28

1 answers

Измените эту строку:

function include_reviews_template(){

К этому:

function include_reviews_template( $template_path ) {

Когда get_post_type() == 'reviews' равно false, вы возвращаете неустановленную переменную ($template_path). Это изменение должно отправить значение, переданное функции WordPress.

 3
Author: Charles Clarkson, 2013-09-28 21:10:34