2010-06-25 8 views
7

Mam szablon kategorii: kategoria-projects.phpBądź Wordpress podkategorii używać kategorię szablonów

Ta kategoria ma podkategorie, ale oni nawiązujące do category.php szablonu instrukcje zamiast kategorii nadrzędnej. W jaki sposób sprawić, aby podkategorie odnosiły się do szablonów kategorii nadrzędnych w kolejności kaskadowej odniesień do szablonów?

* Uwaga, mówię o adresach URL kategorii, a nie postach.

Odpowiedz

12

Jednym ze sposobów, aby to zrobić, aby podłączyć do działania template_redirect w pliku functions.php:

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! To cudownie! Czy istnieje sposób, aby go dalej streścić i czy ma on zastosowanie do WSZYSTKICH podkategorii WSZYSTKICH kategorii, zamiast ogłaszać je dosłownie? – Matrym

+0

Odpowiedź TheDeadMedic na następne pytanie powinna zadziałać. –

+1

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

1

Z tego co wiem; zgodnie z hierarchią szablonu wp, category-samplecat.php odnosi się tylko do kategorii o nazwie "samplecat". Więc nie można tego zrobić w ten sposób.

Ale w pliku category.php (dotyczy każdej kategorii, która nie ma specjalnego pliku szablonu) można wykonać warunkowe sprawdzenie, czy bieżąca kategoria jest dzieckiem "projektu" (przy użyciu tej metody w moim answer do twoje drugie pytanie), a jeśli tak, możesz zastosować do niego tę samą strukturę kategorii-projects.php lub dołączyć kategorię projects.php.

0

odpowiedź Richarda działa, ale będzie ciężko kolidować z innych wtyczek.

znalazłem lepszą alternatywę korzystając add_filter & template_include jako przykład poniżej

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; 
    } 
} 

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

Powiązane problemy