Estou trabalhando com um tipo de postagem personalizado que usa as categorias normais do WordPress.
Eu posso modificar meu modelo de categoria para exibir meus tipos de postagem personalizados exatamente como eu os quero.
O problema é que, depois de fazer isso, as postagens normais do blog também são afetadas.
É claro que posso limitar os posts normais ou o tipo de post a apenas uma categoria e criar um ID-categoria.php para trabalhar apenas com essa categoria.
Mas eu estou querendo saber se existe uma solução mais flexível?
É possível criar modelos de categoria específicos para tipos de postagem, por exemplo, um para exibir postagens, um para mostrar tipos de postagens personalizadas etc.?
isso é possível em tudo? Se não, qual é a melhor maneira de contornar isso?
Para tipos de postagem personalizados com taxonomia personalizada, você pode criar um modelo para essa taxonomia. Seu modelo de taxonomia personalizada seria denominado taxonomy-{taxonomy}.php
. Por exemplo, se sua taxonomia fosse chamada de "categorias de cozinha", você nomearia seu arquivo taxonomy-cooking-categories.php
.
Mais informações sobre arquivos de modelo para arquivos de taxonomia especial podem ser encontradas no codex aqui: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display
Você pode se basear no tipo de postagem da seguinte maneira: digamos que você tenha category.php
para postagens regulares e your-custom-type-category.php
para suas postagens de tipo de post personalizado, depois basta adicionar isso à sua regular category.php no topo.
<?php if (have_posts()){
the_post();
if( 'your_custom_type' == get_post_type( $post ) ) {
rewind_posts();
get_template_part('your-custom-type-category');
exit();
}
rewind_posts();
}
?>
e agora, sempre que uma categoria for solicitada, ela verificará seu tipo de postagem personalizado e, se encontrada, ela usará seu your-custom-type-category.php
como modelo e todas as postagens comuns serão exibidas usando category.php
sem nenhuma alteração.
Espero que isto ajude
Oi @ Kelvin Jayanoris:
Existe uma razão pela qual você não pode simplesmente testar o valor de $post->post_type
com uma instrução if..elseif
dentro de seu Loop , desta forma:
<?php if ($post->post_type=='foo'): ?>
Put HTML for 'foo' post type here...
<?php else if ($post->post_type=='bar'): ?>
Put HTML for 'bar' post type here...
<?php else if ($post->post_type=='post'): ?>
Put HTML for 'post' post type here...
<?php endif; ?>
Ou se houver algum motivo para você não criar sua própria hierarquia de nomes de arquivos na forma de nomes de arquivos como post-foo.php
, post-foo.php
, post-post.php
, também dentro do seu Loop? Esse tipo de código poderia fazer isso por ele:
<?php include("post-{$post->post_type}.php"); ?>