Intereting Posts
Как обрабатывать сообщение перед публикацией? Как разрешить только закачки, которые передаются из моего домена? Перевод даты публикации на арабский язык Разметка пользовательского типа сообщения приводит к ошибке 404 Помощь с ошибкой проверки WordPress RSS Добавить другой класс span в wp nav menu Загружайте медиафайлы на S3 без использования WP Uploader Как предотвратить создание промежуточных изображений, но сохранить размеры для выбора в медиа-библиотеке? Как получить сообщение с другого блога / сайта WordPress? Как получить данные из раздела и отобразить их на странице? Как включить отчет об ошибках без сброса? Как изменить стиль комментария комментария Disqus на главной странице Сообщение не показывает дату, если есть другая запись с той же датой Главное меню – избавиться от титулов? AJAX фильтрует сообщения по клику по категории

Загрузите другой шаблон для 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; } 

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

  1. get_template_part()
  2. locate_template
  3. load_template

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