Usando single.php da pasta do plugin em vez da pasta padrão do modelo

Estou tentando descobrir como usar outro single.php para um plugin personalizado que estou fazendo. É para um tipo de postagem personalizado.

Porque se as pessoas instalam este plugin, eles não terão o single-product.php personalizado em sua pasta de temas. É por isso que eu quero que esteja na pasta do plugin.

Existe uma maneira de alterar o caminho do single.php deste tipo de publicação personalizada ou uma maneira de gerar automaticamente o arquivo na pasta do tema depois de instalar este plugin?

desde já, obrigado

Solutions Collecting From Web of "Usando single.php da pasta do plugin em vez da pasta padrão do modelo"

Eu acho que um gancho no template_include como descrito aqui poderia ser uma maneira correta de fazer isso.

O código poderia ser assim:

 add_filter('template_include', 'my_plugin_templates'); function my_plugin_templates( $template ) { $post_types = array('post'); if (is_singular($post_types)) { $template = 'path/to/singular/template/in/plugin/folder.php'; } return $template; } 

Os plugins nunca devem ter qualquer efeito visual que não seja um widget ou um shortcode. Se você sentir a necessidade de manipular os arquivos do tema, é provável que você esteja errado.

* Há sempre exceções como segmentação de um tema específico ou fazer algo que é tão agnóstico do tema (como popup / lightbox) que há muito poucas chances de quebrar o tema ou obter um resultado feio.

EDITAR de COMENTÁRIOS

Este é um problema de linha de fronteira sem qualquer tipo de resposta de tipo branco / preto. Pelo que você descreve, você deveria ter feito um tema e não um plugin, mas recebo que você tenha recebido a tarefa. O caminho certo é como com woocommerce – shortcodes e widgets que exibem o conteúdo gerenciado como CPT, caso contrário você provavelmente não jogará legal com todos os temas

Onde get_custom_post_type_template é a function que o WordPress deve chamar quando o conteúdo está sendo recuperado. Observe que a function de filtro que o plugin define deve retornar o caminho completo para um arquivo de modelo ou a página resultante será em branco. O arquivo de modelo deve ter as mesmas inputs que o arquivo single.php no tema. Para mais informações, visite o site.

  < ?php function get_custom_post_type_template($single_template) { global $post; if ($post->post_type == 'my_post_type') { $single_template = dirname( __FILE__ ) . '/post-type-template.php'; } return $single_template; } add_filter( 'single_template', 'get_custom_post_type_template' ); ?>