Fügen Sie Designvorlagen für untergeordnete Kategorien in die Vorlagenhierarchie ein

In meiner Site habe ich viele Kategorien und Unterkategorien (untergeordnete Kategorie)

Sagen Sie wie mein Name für eine Kategorie

Drucken
4 colors
2 colors
Offsetdruck

Exemple ich will, wenn besuchen Sie 4 Farbkategorie Seite zeigt es alle 4 Farbkategorie Post mit bestimmten Vorlage. Ich habe viele Codes ausprobiert, aber ich gebe ihnen kein perfektes Ergebnis. Balg ist eine, die verwendet wird, es ist Arbeit schön, aber jetzt Ausgabe ist es auch auf andere Kategorie Kind auch.

add_action('template_redirect', 'load_category_tree_template'); function load_category_tree_template() { if (is_category() && !is_feed()) { // replace 'your-base-category-slug' with the slug of root category $base_tree_cat_id = get_cat_id('printing-products'); // get current category id $catid = get_query_var('cat'); if (is_category($base_tree_cat_id) || cat_is_ancestor_of($base_tree_cat_id, $catid)) { load_template(STYLESHEETPATH . 'category-printing.php'); exit; } } } 

Solutions Collecting From Web of "Fügen Sie Designvorlagen für untergeordnete Kategorien in die Vorlagenhierarchie ein"

Verwenden Sie template_redirect , um alternative template_redirect zu laden, da Sie alle functionen, die diesen Hook verwenden, für eine niedrigere Priorität als Ihre verwenden können. Der richtige Haken ist template_include . Dies ist laut Mark Jaquith, einer der WP Lead-Entwickler. https://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/

Allerdings könnte es in diesem Fall besser sein, den category_template Filter zu verwenden.

Ich benutze dies, basierend auf einem Code-Snippet, das ich gefunden habe und habe die Quelle nicht notiert 🙁

 function wpse_233263_parent_category_hierarchy() { $templates = array(); $category = get_queried_object(); if ( $category->category_parent != 0 ) { $parent = get_category( $category->category_parent ); if(!empty($parent)) { $templates[] = "category-{$parent->slug}-{$category->slug}.php"; $templates[] = "category-{$parent->slug}.php"; $templates[] = "category-{$parent->term_id}.php"; } } else { // Otherwise use the usual default category template files $templates[] = "category-{$category->slug}.php"; $templates[] = "category-{$category->term_id}.php"; } $templates[] = 'category.php'; return locate_template( $templates ); } add_filter( 'category_template', 'wpse_233263_parent_category_hierarchy' ); 

Es wird ausgetriggers, wenn eine Kategorievorlage aufgerufen wird, und erstellt im Wesentlichen eine Liste mit Vorlagen, wenn Sie sich in einer untergeordneten Kategorie befinden, oder richtet die Standardliste ein, wenn dies nicht der Fall ist.

In einer untergeordneten Kategorie können Sie eine Vorlagekategorie parent_slug-child_slug.php haben, und wenn diese nicht existiert, gehen Sie zurück zum Elternteil. Passen Sie die Liste an Ihre Bedürfnisse an.