Então, qual é a melhor prática aqui?
Eu diria uma combinação de deixar o tema lidar com isso e fornecer um padrão com o seu plugin.
Você pode usar o single_template
filtro para mudar o modelo. No retorno de chamada, verifique se o tema forneceu um modelo para o tipo de postagem; caso isso ocorra, não faça nada.
<?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;
}
Eu gosto desse método da melhor maneira. Combine isso com o fornecimento de um conjunto de sons de "tags de modelo" (por exemplo the_content
, the_title
) que suportem todos os dados personalizados que acompanham seu tipo de postagem e você oferece ao usuário final muita capacidade de personalização, além de alguns padrões de som. O Bbpress faz esse tipo de coisa muito bem: inclui modelos de usuário se os encontrar e fornece muitas tags de modelo.
Como alternativa, você pode usar um retorno de chamada com the_content
filtro e apenas alterar as coisas no próprio conteúdo.
<?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;
}