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
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.
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' ); ?>