Modelo de arquivo para termos de taxonomia

Registrei um tipo de postagem personalizado [equipamento] e tenha uma taxonomia de [equipment_type] dentro da taxonomia. Tenho categorias pai e filho. Por exemplo:

Equipamento (tipo de postagem personalizado)

Tipos de equipamentos (Taxonomia)

Câmeras (termo pai)

  • Câmera A (Termo infantil)

  • Câmera B

O que eu gostaria de criar é efetivamente uma página de arquivo para os termos da taxonomia. Então, quando “Cameras” ou “Camera A” são selecionadas, mostra 12 postagens com título e imagem em destaque (links para uma única postagem) mais alguma paginação.

Eu tentei uma consulta WP padrão e Loop e sempre acaba mostrando todas as postagens de taxonomia em todos os termos.

Atualmente, tenho um modelo de taxonomy-equipment_types.php configurado para lidar com a consulta.

Solutions Collecting From Web of "Modelo de arquivo para termos de taxonomia"

Quero documentar isso porque acabei de encontrar a resposta recentemente.

O problema com a taxonomia é que a maioria dos desenvolvedores tem a mentalidade de esperar que a taxonomia seja vista dentro do URL post_type de:

 http://hostname/post_type/taxonomy_term 

Em vez disso, você encontrará o URL em:

 http://hostname/taxonomy_slug/taxonomy_term 

Isso significa que muitas vezes podemos estar criando o modelo corretamente como

 taxonomy-taxonomy_slug-taxonomy_term.php 

Mas a maneira correta de usá-lo é esperar dentro da url

 http://hostname/taxonomy_slug/taxonomy_term 

Para ver o URL correto para a taxonomia, podemos usar

 get_the_term_list($post->ID,'taxonomy_slug') 

E teste onde quer que o link aponte.

A hierarquia do modelo WordPress fornece o arquivo de modelo exato que você precisa: taxonomy-{taxonomy}-{term}.php .

Então, para criar um modelo personalizado para o termo de cameras da taxonomia equipment_types , você criaria um arquivo chamado taxonomy-equipment_types-cameras.php .

(Nota, você também pode criar um arquivo de modelo para a própria taxonomia , basta omitir o slumber {term} : taxonomy-{taxonomy}.php ou taxonomy-equipment_types.php no seu caso.)

Você pode, condicionalmente, exibir conteúdo com base na hierarquia consultando para o termo pai, através das propriedades do object retornadas por get_term() , ou o termo children, via get_term_children() .

Eu tive uma questão semelhante. O problema com as respostas acima é que todos exigem que você especifique o CPT, a taxonomia ou o termo.

Se – como você indicou – você deseja recuperar isso de forma dinâmica, dependendo da página de CPT em que o usuário esteja ativado, você pode tentar o seguinte (que funciona para mim), que exibe todas as taxonomias para o tipo de postagem customizado atual.

( originalmente desta postagem com a ajuda do GhostToast )

  < ?php get_header(); ?> 
    < ? // Start taxonomy term archives query $post_type = get_post_type(); // find out CPT name $taxonomies = get_object_taxonomies($post_type); // Find taxonomies if($taxonomies){ foreach($taxonomies as $taxonomy){ // only want hierarchial -- no tags please if(is_taxonomy_hierarchical($taxonomy)){ $terms = get_terms($taxonomy, array( 'orderby' => 'name', 'order' => 'Asc', 'hide_empty' => true )); foreach ( $terms as $term ) { // example output below ?>
  • < ? echo $term->name; ?>

  • < ? } } } }?>
< ?php wp_reset_query(); ?>
< ?php get_footer(); ?>

Salve o acima em um arquivo chamado algo como archive-mycpt.php, então em archive.php adicione isso depois da chamada de header;

 < ?php get_header(); ?> < ?php // is this one of our CPT ? If so, direct to custom archive page if ( is_custom_post_type() ){ include (TEMPLATEPATH . '/archive-mycpt.php'); // if not continue... } else { ?>  < ? } ?>