Intereting Posts
Попытка получить свойство необъектных уведомлений в comment-template.php Удалить тег короткой ссылки с определенной страницы Медиа-библиотека неправильно отображает изображения Создание персонализированного типа сообщений для публикации фотографий передать строку запроса на url для фильтрации медиа Почему `url_to_postid` возвращает 0 при тестировании страницы` page_for_posts`? Как отсортировать список настраиваемых сообщений, чтобы получить представление, подобное дереву сообщений по категориям и категориям их детей? Добавление персонализированных элементов типа сообщения из внешнего интерфейса С помощью wp-cli я не могу запрашивать страницы по их названию? Использование плагинов wordpress wp_add_inline_style в плагине не работает Сортировка пользовательских полей в админе по последнему добавленному полю Пользовательские типы сообщений и пользовательские поля в Multisite Отладочная техника Вопрос re: functions.php flush_rewrite_rules () не работает над обновлением API настроек

Загрузите другой шаблон для CPT (в цикле) в моем плагине?

Я пишу плагин, который регистрирует новый CPT с именем «sec-feature». В следующем цикле в моем index.php я хочу загрузить feature-template.php для этих сообщений CPT. Но get_template_part просто находит файл в каталоге тем. Я хочу эту функциональность: если этот файл не существует в каталоге тем, найдите его в моем каталоге плагинов.

Есть ли способ сделать это (а не жестким кодированием) или обработать выходной шаблон плагином?

 $args = array( 'post__in' => array(244,302), 'post_type' => array( 'sec-feature') ); $the_query = new WP_Query( $args ); while ( $the_query->have_posts() ) : $the_query->the_post(); get_template_part('feature-template'); endwhile; 

РЕДАКТИРОВАТЬ

Я использую следующий код в своем плагине, но он работает только для отдельных сообщений. В петле сообщений это не работает.

 add_filter( 'template_include', 'include_template_function', 1 ); public function include_template_function( $template_path ) { if ( get_post_type() == 'sec-feature' ) { $theme_file = get_stylesheet_directory() .'/feature-template.php'; if ( file_exists($theme_file) ) { $template_path = $theme_file; } else { $template_path = plugin_dir_path( __FILE__ ) . 'feature-template.php'; } } return $template_path; } 

Solutions Collecting From Web of "Загрузите другой шаблон для CPT (в цикле) в моем плагине?"

В последовательности загрузки, вызванной get_template_part() , нет крючков, которые вам помогут.

  1. get_template_part()
  2. locate_template
  3. load_template

И locate_template() жестко закодирован для просмотра файлов тем. Мне не нравится писать ответы «вы не можете этого», но я честно не вижу способа переопределить get_template_part() файла get_template_part() .