Unterschiedliche Vorlage für Beiträge aller Unterkategorien der Kategorie

Ich möchte eine andere Vorlage für Beiträge aller Unterkategorien einer Kategorie verwenden. Unten ist der Code, den ich verwende:

add_filter( 'single_template', 'get_custom_cat_template' ) ; function get_custom_cat_template( $single_template ) { global $post; if ( is_category( 'blog' ) || in_category( 'blog' ) ) { $single_template = dirname( __FILE__ ) . '/single-blog.php'; } return $single_template; } 

Hier ist “Blog” die Kategorie. Dieser Code funktioniert nur für die übergeordnete Kategorie (Blog). Bei Posts der Unterkategorie wird die Standarddatei single.php .

Wie kann ich den Code so ändern, dass er für alle Unterkategorien der übergeordneten Kategorie funktioniert?

Solutions Collecting From Web of "Unterschiedliche Vorlage für Beiträge aller Unterkategorien der Kategorie"

Sie können überprüfen, ob die aktuelle Kategorie ein Kind der cat_is_ancestor_of() mit der function cat_is_ancestor_of() oder term_is_ancestor_of() , oder besser, verwenden Sie in_category() , wie Sie es gerade tun, aber auch in_category() Kategorien.

 add_filter( 'single_template', 'get_custom_cat_template' ) ; function get_custom_cat_template( $single_template ) { // You want to filter only template for single posts of default post type if( is_singular( 'post' ) ) { $post = get_queried_object(); // Replace '3' with the ID of the 'blog' category $child_blog_categories = get_term_children( '3', 'category' ); if ( in_category( 'blog', $post ) || in_category( $child_blog_categories, $post ) ) { $single_template = locate_template( 'single-blog.php' ); } } return $single_template; } 

Wie auch immer, ich denke, wenn Sie sehen, dass Sie eine Kategorie von Posts erstellen, um Posts in dieser Kategorie auf andere Weise zu verwalten, sollten Sie sich die benutzerdefinierten Post-Typen ansehen.