Plantilla de archivo para términos de taxonomía
He registrado un tipo de entrada personalizada [equipment] y tengo una taxonomía [equipment_type] dentro de la cual tengo categorías padre e hijo. Por ejemplo:
Equipment (Tipo de entrada personalizada)
Equipment Types (Taxonomía)
Cameras (Término padre)
Camera A (Término hijo)
Camera B
Lo que me gustaría crear es efectivamente una página de archivo para los términos de taxonomía. Así que cuando se selecciona 'Cameras' o 'Camera A' muestre, digamos, 12 entradas con título e imagen destacada (enlaces a entrada individual) más algo de paginación.
He intentado una consulta y bucle estándar de WP y siempre termina mostrando todas las entradas de taxonomías en todos los términos.
Actualmente tengo una plantilla taxonomy-equipment_types.php
configurada para manejar la consulta.

Quiero documentar esto porque acabo de encontrar la respuesta recientemente.
El problema con las taxonomías es que la mayoría de los desarrolladores tienen la mentalidad de esperar que la taxonomía se vea dentro de la URL del post_type
como:
http://hostname/post_type/taxonomy_term
En cambio, vas a encontrar la URL en:
http://hostname/taxonomy_slug/taxonomy_term
Esto significa que a menudo podemos estar creando la plantilla correctamente como
taxonomy-taxonomy_slug-taxonomy_term.php
Pero la forma correcta de usarla es esperarla dentro de la URL
http://hostname/taxonomy_slug/taxonomy_term
Para ver la URL correcta de la taxonomía, podemos usar
get_the_term_list($post->ID,'taxonomy_slug')
Y probar hacia dónde apunta el enlace.

La Jerarquía de Plantillas de WordPress proporciona el archivo de plantilla exacto que necesitas: taxonomy-{taxonomy}-{term}.php
.
Por lo tanto, para crear una plantilla personalizada para el término cameras
de la taxonomía equipment_types
, deberías crear un archivo llamado taxonomy-equipment_types-cameras.php
.
(Nota: también puedes crear un archivo de plantilla para la taxonomía en sí; simplemente omite el slug {term}
: taxonomy-{taxonomy}.php
, o taxonomy-equipment_types.php
en tu caso.)
Puedes mostrar contenido condicionalmente basado en la jerarquía consultando ya sea el término padre, a través de las propiedades del objeto devuelto por get_term()
, o los términos hijos, mediante get_term_children()
.

Gracias Chip, pensé que la plantilla de WP proporcionaba lo que necesitaba como sugeriste: taxonomy-equipment_types.php
Creo que donde estoy teniendo dificultades es en averiguar cómo mostrar el contenido/publicaciones basado en los términos seleccionados por el usuario tanto para el padre como para el hijo, cámaras o cámaras-a.
¿Estás sugiriendo que use 'get_term()' para determinar qué contenido/publicaciones deberían mostrarse en el loop?
Soy bastante nuevo en PHP y actualmente estoy aprendiendo a través de Lynda.com. Así que tendré que profundizar un poco más y tratar de entender el proceso.
¿Podrías proporcionar un ejemplo aproximado para ayudarme a entender lo que necesito hacer?

Tuve un problema similar. El problema con las respuestas anteriores es que todas requieren que especifiques el CPT, la taxonomía o el término.
Si - como has indicado - deseas recuperar esto dinámicamente dependiendo de en qué página de CPT se encuentre el usuario, puedes probar lo siguiente (que funciona para mí), que muestra todas las taxonomías para el tipo de contenido personalizado actual.
(originalmente de este post con la ayuda de GhostToast)
<?php get_header(); ?>
<div id="content">
<div id="main">
<ul>
<? // Iniciar consulta de archivos de términos de taxonomía
$post_type = get_post_type(); // obtener nombre del CPT
$taxonomies = get_object_taxonomies($post_type); // Encontrar taxonomías
if($taxonomies){
foreach($taxonomies as $taxonomy){
// solo queremos jerárquicas -- sin etiquetas por favor
if(is_taxonomy_hierarchical($taxonomy)){
$terms = get_terms($taxonomy, array(
'orderby' => 'name',
'order' => 'Asc',
'hide_empty' => true ));
foreach ( $terms as $term ) {
// ejemplo de salida a continuación ?>
<li>
<h1><a href="<?php echo get_term_link($term->slug, $taxonomy); ?> "><? echo $term->name; ?></a></h1>
<div class="imgBox">
<a href="<?php echo get_term_link($term->slug, $taxonomy); ?> " title="<? echo $term->name; ?>" >
<img src="<?php echo get_template_directory_uri(); ?>/timthumb.php?src=/library/images/dingy-placeholder.png&h=196&w=285&zc=1" alt="<?php the_title(); ?>" /></a>
</div>
<div class="the-excerpt">
<a href="<?php echo get_term_link($term->slug, $taxonomy); ?> "><? echo $term->description; //puedes agregar esto en el admin ?> - haz clic para ver más</a>
</div>
</li>
<?
}
}
}
}?>
</ul>
<?php wp_reset_query(); ?>
</div> <!-- fin #main -->
</div> <!-- fin #content -->
<?php get_footer(); ?>
Guarda el código anterior en un archivo llamado algo como archive-mycpt.php, luego en archive.php agrega esto después de la llamada al header:
<?php get_header(); ?>
<?php // ¿es este uno de nuestros CPT? Si es así, dirigir a la página de archivo personalizado
if ( is_custom_post_type() ){
include (TEMPLATEPATH . '/archive-mycpt.php');
// si no, continuar...
} else { ?>
<!-- contenido de archive.php -->
<? } ?>
