Verwenden einer anderen Vorlage pro benutzerdefinierten Taxonomien für einzelne Termarchivseiten

Ich habe 2 benutzerdefinierte Taxonomien mit jeweils mehreren Begriffen:

tax1 term1_1 term1_2 tax2 term2_1 term2_2 term2_3 

Ich versuche, dass jede Taxonomie für jede einzelne Archivseite eine andere Vorlagendatei verwendet. IE term1_1 and term1_2 verwenden eine Vorlage, während term2_1 - 3 eine zweite verwenden. Ich kann natürlich nur verschiedene php-Dateien bedingt aus der Hauptdatei archive.php laden – aber ich würde gerne wissen, ob es einen Weg gibt, dies innerhalb der Standard-Template-Hierarchie zu tun.

Soweit ich das beurteilen kann, funktioniert taxonomy-tax1.php dafür nicht (es sei denn, ich vermassle königlich)

Solutions Collecting From Web of "Verwenden einer anderen Vorlage pro benutzerdefinierten Taxonomien für einzelne Termarchivseiten"

Ich würde den Vorlagenlader bei template_redirect abfangen:

 function wpse53892_taxonomy_template_redirect() { // code goes here } add_action( 'template_redirect', 'wpse53892_taxonomy_template_redirect' ); 

Dann würden Sie überprüfen, ob die Abfrage eine benutzerdefinierte Taxonomie ist:

 if ( is_tax() ) { // This query is a custom taxonomy } 

Als nächstes, hol dir den Begriff Objekt und finde heraus, ob es ein Elternteil hat:

 // Get the queried term $term = get_queried_object(); // Determine if term has a parent; // I *think* this will work; if not see below if ( 0 != $term->parent ) { // Tell WordPress to use the parent template $parent = get_term( $term->parent ); // Load parent taxonomy template get_query_template( 'taxonomy', 'taxonomy-' . $term->taxonomy . '-' . $parent->slug . 'php' ); } // If above doesn't work, this should: $term_object = get_term( $term->ID ); if ( 0 != $term_object->parent; {} 

Also, alles zusammensetzen:

 function wpse53892_taxonomy_template_redirect() { // Only modify custom taxonomy template redirect if ( is_tax() ) { // Get the queried term $term = get_queried_object(); // Determine if term has a parent; // I *think* this will work; if not see above if ( 0 != $term->parent ) { // Tell WordPress to use the parent template $parent = get_term( $term->parent ); // Load parent taxonomy template get_query_template( 'taxonomy', 'taxonomy-' . $term->taxonomy . '-' . $parent->slug . 'php' ); } } } add_action( 'template_redirect', 'wpse53892_taxonomy_template_redirect' ); 

Überprüfen Sie die WordPress- Vorlagenhierarchie . Wie Sie sehen können, können Sie die Mustertaxonomie- taxonomy-$taxonomy-$term.php , um eine Vorlage für eine bestimmte Taxonomie und einen bestimmten Begriff anzugeben. In Ihrem Fall wird es taxonomy-tax1-term1_1.php usw. sein.

Ändern Sie die Bedingungen so, dass sie auf Ihre Archivseite ausgerichtet sind. Ich würde template_include wie folgt verwenden:

 add_filter( 'template_include', 'tax_term_template', 99 ); function tax_term_template( $template ) { if ( "add your conditional here" ) { $new_template = locate_template( array( 'tax_term.php' ) ); if ( '' != $new_template ) { return $new_template; } } return $template; } 

Ich würde KEIN Template-Redirect verwenden, wie von Lead Developer Mark Jaquith empfohlen.