Intereting Posts
Наиболее эффективный способ поиска значений из CPT в почтовом контенте Как создать страницу, недоступную через меню? Функция sanitize_title () не работает Пользовательский тип переписки Пользовательская мета не сохраняется Присвоение переменной переменной и ее использование в выражении if Есть ли плагин для защиты загрузок с помощью recaptcha? Изменение всех вариантов управления с помощью wp.customize с помощью JavaScript сценарий принудительной очереди, чтобы быть первым в порядке выдачи Пользовательский тип сообщения без редактора или изменений. Уведомлять об обновлении? Получение «Cookies заблокированы или не поддерживаются вашим браузером» на странице входа Панель администратора WP исчезла Только администратор должен иметь возможность добавлять определенное настраиваемое поле Есть ли крючок или функция для многопользовательского блога деактивировать или удалить? Вложенные короткие коды

Можно ли определить шаблон для настраиваемого типа сообщения внутри плагина независимо от активной темы?

Я пишу плагин для управления данными о проектах с открытым исходным кодом. Я разработал объектную модель и успешно создал все пользовательские типы сообщений и таксономии, а также реализовал правильные возможности / роли, используя плагин Members . Соответствующие пользователи могут создавать, изменять и удалять свои собственные сообщения, а администраторы могут их одобрять, а также изменять и удалять сообщения кого-либо.

Моя проблема заключается в том, что я хочу определить шаблон для одного проекта и для списка проектов (один и архив, я считаю, я никогда не работал с WordPress на этом уровне), но я не хочу, чтобы The Loop полагался в текущей теме, чтобы отобразить страницу для одного проекта или списка проектов. Если я использую тему TwentyTen, я хочу, чтобы она использовала мой шаблон плагина для этих пользовательских типов сообщений. Если я использую тему TwentyEleven, я все же хочу, чтобы она использовала мой шаблон плагина для этих настраиваемых типов сообщений.

Я хочу, чтобы это подчинялось парадигме «это просто работает», но сейчас пользователи не могут просто отбросить папку в каталоге плагина – они должны добавлять соответствующие файлы в свою папку тем при каждом переключении тем. Я проверил иерархию шаблонов, и у меня есть имена файлов правильно, но они не используются WordPress, если они находятся в папке плагина или в папке плагинов / шаблонов.

Благодаря!

Solutions Collecting From Web of "Можно ли определить шаблон для настраиваемого типа сообщения внутри плагина независимо от активной темы?"

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

 add_filter( 'template_include', 'my_plugin_templates' ); function my_plugin_templates( $template ) { $post_types = array( 'project' ); if ( is_post_type_archive( $post_types ) && ! file_exists( get_stylesheet_directory() . '/archive-project.php' ) ) $template = 'path/to/list/template/in/plugin/folder.php'; if ( is_singular( $post_types ) && ! file_exists( get_stylesheet_directory() . '/single-project.php' ) ) $template = 'path/to/singular/template/in/plugin/folder.php'; return $template; } 

Я не полностью протестировал бит архива типа post, вам может потребоваться включить проверку с использованием is_tax( $taxonomies ) чтобы заставить ее работать с соответствующими настраиваемыми архивами таксономии.