Intereting Posts
Фильтр Hook для обновления плагина Рекомендации по обеспечению установки Buddypress? Что такое «учетная запись пользователя» для разрешений файлов WordPress? Сколько фильтров / активных крючков здорово? Загружать прикрепленные изображения на одном сайте страницы с помощью fancybox Обновленные сообщения API настроек не будут отображаться, если пользовательская страница администрирования не подключена к add_options_page () Загружать скрипты для do_shortcode ('') Изменить / пересмотреть вариант, чтобы авторы предлагали улучшение сообщений Как разрешить пользователям добавлять фотографию / изображение вместо серого / белого силуэта? Удалите последние символы X настраиваемого значения поля ограничить список тегов одной категорией В чем основное различие между детской темой и обычной темой Regex в add_rewrite_tag не принимает OR операторов? Пользовательские правила перезаписи для страницы с переменными GET? как отслеживать предупреждение предупреждения по основной функции is_page () & is_singular в классе-wp-query.php

Пользовательская таксономия в плагине и шаблоне

У меня есть плагин, который я разрабатываю, используя пользовательские типы сообщений и таксономии. Мой вопрос таков. Как загрузить данные контента / темы из моего плагина на страницу, когда вы перейдете к пользовательскому URL-адресу таксономии?

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

Я пытаюсь использовать файлы шаблонов плагина, а не темы для моей пользовательской таксомонии.

Прежде всего – плагины предназначены для создания контента, темы для его отображения . Так что действительно, плагин не должен этого делать. Но есть серые области – например, в плагине, связанном с событиями, было бы желательно отображать даты, место проведения и т. Д. – то, что тема WordPress обычно не отображается.

Я бы предложил

  • что делает шаблоны плагинов чрезмерными с шаблонами с тем же именем в теме темы / ребенка.
  • Возможность «отключить» форматирование плагинов шаблона.

Чтобы изменить используемый шаблон, вы можете использовать фильтр template_include . Это пример шаблонов таксономии, но аналогичный процесс возможен для пользовательских типов сообщений.

 add_filter('template_include', 'wpse50201_set_template'); function wpse50201_set_template( $template ){ //Add option for plugin to turn this off? If so just return $template //Check if the taxonomy is being viewed //Suggested: check also if the current template is 'suitable' if( is_tax('event-venue') && !wpse50201_is_template($template)) $template = plugin_dir_url(__FILE__ ).'templates/taxonomy-event-venue.php'; return $template; } 

Обратите внимание, что предполагается, что шаблоны плагинов находятся в подпапке шаблона относительно текущего директора.

логика

Это просто проверяет, что таксономия «событие-место» просматривается. Если нет, он будет использовать оригинальный шаблон.

Функция wpse50201_is_template проверяет, выбран ли шаблон WordPress из темы / child-theme taxonomy-event-venue.php или taxonomy-event-venue-{term-slug}.php . Если это – используется исходный шаблон.

Это позволяет пользователям вашего плагина копировать их в свою тему и редактировать их, а плагин будет определять приоритеты шаблонов темы / дочерней темы. Только если он не может их найти, он возвращается к шаблонам плагинов.

 function wpse50201_is_template( $template_path ){ //Get template name $template = basename($template_path); //Check if template is taxonomy-event-venue.php //Check if template is taxonomy-event-venue-{term-slug}.php if( 1 == preg_match('/^taxonomy-event-venue((-(\S*))?).php/',$template) ) return true; return false; } 

Я использовал этот метод в плагине – здесь вы можете увидеть рабочий пример выше.

Вот как я вызываю шаблон таксономии из подкаталога в моей папке темы. Имейте в виду, что taxonomy.php необходимо будет оставаться в корневом каталоге темы.

 function call_taxonomy_template_from_directory(){ global $post; $taxonomy_slug = get_query_var('taxonomy'); load_template(get_template_directory() . "/templates-taxonomy/taxonomy-$taxonomy_slug.php"); } add_filter('taxonomy_template', 'call_taxonomy_template_from_directory'); 

Например, моя таксономия называется «категория новостей». Шаблон размещается по адресу wp-content/themes/mytheme/templates-taxonomy/taxonomy-news-category.php