Wenden Sie eine benutzerdefinierte Kategorievorlage auf Unterkategorien an

Hallo auf meiner WordPress-Seite Ich habe eine benutzerdefinierte Vorlage für Kategorie A mit Slug (cat-a). Ich habe eine Kategorie-cat-a.php-Datei erstellt, um dieser Kategorie ein benutzerdefiniertes Layout zu geben, und dies funktioniert problemlos.

Ich frage mich, gibt es eine einfache Möglichkeit, das gleiche Layout auf alle Unterkategorien von A anzuwenden (ich möchte nicht wirklich eine benutzerdefinierte Vorlage für jede Unterkategorie erstellen, da es eine Menge gibt)?

Solutions Collecting From Web of "Wenden Sie eine benutzerdefinierte Kategorievorlage auf Unterkategorien an"

Ich weiß nicht, ob es der beste Weg ist, aber eine Möglichkeit, die mir in den Sinn kommt, ist, die function template_redirect zu haken.

Wenn es einen benutzerdefinierten post_type und ich Kinder zu einer einzigartigen Vorlage wollte, würde ich es so machen. Sie müssen mit den Taxonomien arbeiten, aber es gilt das gleiche Prinzip.

add_filter('template_redirect', 'page_template_override' ); function page_template_override() { global $wp_query,$post; if(isset($wp_query->query_vars['posttype']) && $post->post_parent > 0){ include( get_template_directory() . '/template-name.php' ); exit; } } 

Wenn a der Kategorie-Slug ist, würde folgender Code funktionieren:

 add_action('template_include', 'wpse129481_template_include'); function wpse129481_template_include($t) { // is category archive page if( is_category() ) { // current queried category id from queried object $child_id = get_queried_object_id(); // parent category object, getting it by slug. $parent_cat = get_term_by('slug', 'a', 'category'); // current category object, can also be used get_queried_object() $child_cat = get_term($child_id, 'category'); // important part here is the cat_is_ancestor_of() function. // it checks if first category is parent/grand parent of second if( isset($parent_cat->term_id) && isset($child_cat->term_id) && $parent_cat->term_id != $child_cat->term_id && cat_is_ancestor_of( $parent_cat, $child_cat ) ) { locate_template( array('category-cat-a.php') ); } } return $t; }