Șablon arhivă pentru termenii taxonomiei
Am înregistrat un tip personalizat de postare [equipment] și am o taxonomie [equipment_type] în care am categorii părinte și copil. De exemplu:
Equipment (Tip personalizat de postare)
Equipment Types (Taxonomie)
Cameras (Termen părinte)
Camera A (Termen copil)
Camera B
Ceea ce doresc să creez este efectiv o pagină de arhivă pentru termenii taxonomiei. Astfel, când fie 'Cameras' sau 'Camera A' este selectat, să afișeze să zicem 12 postări cu titlu și imagine reprezentativă (linkuri către postarea individuală) plus paginare.
Am încercat o interogare standard WP și Loop și întotdeauna ajunge să afișeze toate postările taxonomiei din toți termenii.
În prezent am un șablon taxonomy-equipment_types.php
configurat pentru a gestiona interogarea.

Vreau să documentez acest lucru pentru că am găsit răspunsul recent.
Problema cu taxonomiile este că majoritatea dezvoltatorilor au așteptarea mentală ca taxonomia să fie vizibilă în URL-ul post_type
sub forma:
http://hostname/post_type/taxonomy_term
În schimb, veți găsi URL-ul în:
http://hostname/taxonomy_slug/taxonomy_term
Aceasta înseamnă că adesea putem crea șablonul corect ca
taxonomy-taxonomy_slug-taxonomy_term.php
Dar modul corect de a-l folosi este să ne așteptăm să fie în URL
http://hostname/taxonomy_slug/taxonomy_term
Pentru a vedea URL-ul corect pentru taxonomie, putem folosi
get_the_term_list($post->ID,'taxonomy_slug')
Și să testăm unde va duce link-ul.

Ierarhia de șabloane din WordPress oferă fișierul exact de șablon de care ai nevoie: taxonomy-{taxonomy}-{term}.php
.
Deci, pentru a crea un șablon personalizat pentru termenul cameras
din taxonomia equipment_types
, ai crea un fișier numit taxonomy-equipment_types-cameras.php
.
(Notă, poți crea și un fișier de șablon pentru taxonomia în sine; pur și simplu omite slug-ul {term}
: taxonomy-{taxonomy}.php
, sau taxonomy-equipment_types.php
în cazul tău.)
Poți afișa condiționat conținut bazat pe ierarhie prin interogarea fie a părintelui termenului, prin proprietățile obiectului returnate de get_term()
, fie a copiilor termenului, prin get_term_children()
.

Mulțumesc Chip, credeam că șablonul WP oferă ceea ce am nevoie, așa cum ai sugerat: taxonomy-equipment_types.php
Cred că mă chinui să înțeleg cum să afișez conținutul/postările în funcție de termenii selectați de utilizator pentru părinte și/sau copil, cameras sau cameras-a.
Sugerezi să folosesc 'get_term()' pentru a determina ce conținut/postări ar trebui afișate în buclă?
Sunt relativ nou în PHP și în prezent învăț prin Lynda.com. Așa că va trebui să aprofundez puțin și să încerc să înțeleg procesul.
Ai putea oferi un exemplu aproximativ pentru a mă ajuta să înțeleg ce trebuie să fac?

Am avut o problemă similară. Problema cu răspunsurile de mai sus este că toate necesită să specifici CPT-ul, taxonomia sau termenul.
Dacă - după cum ai indicat - vrei să obții aceste informații dinamic în funcție de pagina CPT pe care se află utilizatorul, poți încerca următoarea soluție (care funcționează pentru mine), care afișează toate taxonomiile pentru tipul de postare personalizat curent.
(original din acest post cu ajutorul lui GhostToast)
<?php get_header(); ?>
<div id="content">
<div id="main">
<ul>
<? // Începe interogarea arhivelor termenilor de taxonomie
$post_type = get_post_type(); // află numele CPT
$taxonomies = get_object_taxonomies($post_type); // Găsește taxonomiile
if($taxonomies){
foreach($taxonomies as $taxonomy){
// doar taxonomii ierarhice - fără etichete
if(is_taxonomy_hierarchical($taxonomy)){
$terms = get_terms($taxonomy, array(
'orderby' => 'name',
'order' => 'Asc',
'hide_empty' => true ));
foreach ( $terms as $term ) {
// exemplu de afișare mai jos ?>
<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; //poți adăuga asta în admin ?> - click pentru a vedea mai mult</a>
</div>
</li>
<?
}
}
}
}?>
</ul>
<?php wp_reset_query(); ?>
</div> <!-- sfârșit #main -->
</div> <!-- sfârșit #content -->
<?php get_footer(); ?>
Salvează codul de mai sus într-un fișier numit ceva de genul archive-mycpt.php, apoi în archive.php adaugă acest cod după apelul header;
<?php get_header(); ?>
<?php // este acesta unul dintre CPT-urile noastre? Dacă da, direcționează către pagina de arhivă personalizată
if ( is_custom_post_type() ){
include (TEMPLATEPATH . '/archive-mycpt.php');
// dacă nu, continuă...
} else { ?>
<!-- conținut archive.php -->
<? } ?>
