Так какова лучшая практика здесь?
Я бы сказал, комбинация, позволяющая теме обрабатывать это и предоставление по умолчанию с вашим плагином.
Вы можете использовать single_template
фильтр, чтобы отключить шаблон. В вашем обратном вызове посмотрите, предоставила ли тема шаблон для типа поста, если он сделал, ничего не делайте.
<?php
add_filter('single_template', 'wpse96660_single_template');
function wpse96660_single_template($template)
{
if ('your_post_type' == get_post_type(get_queried_object_id()) && !$template) {
// if you're here, you're on a singlar page for your costum post
// type and WP did NOT locate a template, use your own.
$template = dirname(__FILE__) . '/path/to/fallback/template.php';
}
return $template;
}
Мне нравится этот метод лучше всего. Объедините это с предоставлением звукового набора «шаблонных тегов» (например the_content
, the_title
), которые поддерживают любые пользовательские данные, которые соответствуют вашему типу поста, и вы даете конечному пользователю много возможностей настройки наряду с некоторыми звуковыми настройками по умолчанию. Bbpress действительно хорошо справляется с такой задачей: включает пользовательские шаблоны, если он их находит, и предоставляет множество тегов шаблонов.
Кроме того, вы можете использовать обратный вызов с the_content
фильтром, и просто изменить материал в самом контенте.
<?php
add_filter('the_content', 'wpse96660_the_content');
function wpse96660_the_content($content)
{
if (is_singular('your_post_type') && in_the_loop()) {
// change stuff
$content .= '<p>here we are on my custom post type</p>';
}
return $content;
}