2010-06-25 18 views
7

ich habe eine Kategorie Vorlage: Kategorie-projects.phpMake Wordpress Unterkategorien Kategorie Template

Diese Kategorie Unterkategorien, aber sie beziehen anstelle der Hauptkategorie der Vorlage category.php für Anweisungen. Wie kann ich festlegen, dass sich Unterkategorien in der kaskadierenden Reihenfolge von Vorlagenreferenzen auf Vorlagen für übergeordnete Kategorien beziehen?

* Hinweis, ich spreche über Kategorie Ebene URLs, keine Beiträge.

Antwort

12

Eine Möglichkeit, dies zu tun, ist in die template_redirect Aktion in Ihrer functions.php Datei Haken:

function myTemplateSelect() { 
    if (is_category() && !is_feed()) { 
     if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) { 
      load_template(TEMPLATEPATH . '/category-projects.php'); 
      exit; 
     } 
    } 
} 

add_action('template_redirect', 'myTemplateSelect'); 
+0

Woooooahhhhhh mit! Das ist großartig! Gibt es eine Möglichkeit, sie weiter zu abstrahieren und sie auf ALLE Unterkategorien ALLER Kategorien anzuwenden, statt sie jeweils wörtlich zu erklären? – Matrym

+0

TheDeadMedics Antwort auf Ihre nachfolgende Frage sollte funktionieren. –

+1

http://stackoverflow.com/questions/3119961/make-all-wordpress-categories-use-their-parent-category-template – Matrym

1

Soweit ich weiß; Gemäß der Template-Hierarchie von wp gilt category-samplecat.php nur für eine Kategorie mit dem Slug-Namen "samplecat". So ist es nicht möglich.

Aber in der Datei category.php (das gilt für jede Kategorie, die keine spezielle Vorlagendatei hat) können Sie eine bedingte Prüfung vornehmen, ob die aktuelle Kategorie ein Kind von "Projekt" ist (mit dieser Methode in meinem answer zu Ihre andere Frage) und wenn ja, können Sie die gleiche Struktur von category-projects.php darauf anwenden oder category-projects.php einschließen.

0

Richard Antwort funktioniert, aber es wird mit anderen Plugins stark stören.

fand ich eine bessere Alternative add_filter & template_include wie das Beispiel unten

add_filter('template_include', 'my_callback'); 

function my_callback($original_template) { 
    if (some_condition()) { 
     return SOME_PATH . '/some-custom-file.php'; 
    } else { 
     return $original_template; 
    } 
} 

Credit https://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/

Verwandte Themen