Option 2 ist die beste Option. Um zu wissen warum, muss man sich den Template Loader ansehen .
( Die Vorlagenhierarchie bedeutet nichts, wenn Sie nicht wissen, wie es wirklich funktioniert oder woher es kommt. )
if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
59 $template = false;
60 if ( is_404() && $template = get_404_template() ) :
61 elseif ( is_search() && $template = get_search_template() ) :
62 elseif ( is_front_page() && $template = get_front_page_template() ) :
63 elseif ( is_home() && $template = get_home_template() ) :
64 elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
65 elseif ( is_tax() && $template = get_taxonomy_template() ) :
66 elseif ( is_attachment() && $template = get_attachment_template() ) :
67 remove_filter('the_content', 'prepend_attachment');
68 elseif ( is_single() && $template = get_single_template() ) :
69 elseif ( is_page() && $template = get_page_template() ) :
70 elseif ( is_singular() && $template = get_singular_template() ) :
71 elseif ( is_category() && $template = get_category_template() ) :
72 elseif ( is_tag() && $template = get_tag_template() ) :
73 elseif ( is_author() && $template = get_author_template() ) :
74 elseif ( is_date() && $template = get_date_template() ) :
75 elseif ( is_archive() && $template = get_archive_template() ) :
76 elseif ( is_comments_popup() && $template = get_comments_popup_template() ) :
77 elseif ( is_paged() && $template = get_paged_template() ) :
78 else :
79 $template = get_index_template();
80 endif;
Dieser Template Loader wird unabhängig vom Laden jeder Seite im Frontend ausgeführt. Wie Sie sehen können, geht WordPress eine Liste durch und überprüft die Bedingungen anhand der angeforderten Seite. Verwenden wir als Beispiel eine Kategorieseite, wobei die Kategorie die Kategorie " Nicht kategorisiert" ist.
Eine if / else-Anweisung führt die erste Bedingung aus, die true zurückgibt, und auf Kategorieseiten ist dies die is_category()
bedingte Anweisung. Diese Anweisung führt die Anweisung aus get_category_template()
und bewertet sie auch. Wenn diese Anweisung auch true klingt ( eine gültige Kategorieseite ist verfügbar ), wird die Vorlage entsprechend dem gefundenen Wert geladen. Wenn diese Anweisung false zurückgibt, sucht der Template Loader weiter nach der nächsten true-Anweisung, die ich etwas später behandeln werde .
Was drinnen passiert, get_category_template()
ist wichtig. Die Funktion erstellt drei Vorlagennamen entsprechend der angeforderten Kategorieseite. Als Beispiel wird die folgende in der Reihenfolge erstellt category-uncategorized.php
, category-1.php
und category.php
. Diese Vorlagennamen werden in einem Array gespeichert und an übergeben get_query_template()
. Dies ist die Funktion, die die Aufgabe hat, nach den übergebenen Vorlagennamen zu suchen und die erste vorhandene und verfügbare Vorlage zurückzugeben. Dies ist erledigt mit locate_template()
.
Das heißt also, WordPress ( eigentlich, locate_template()
wenn Sie technisch werden möchten ) beginnt mit der Suche nach category-uncategorized.php
, wenn es gefunden wird, wird die Vorlage zurückgegeben und geladen. Wenn nicht gefunden, fährt WordPress mit Versuchen fort category-1.php
und wenn dies fehlschlägt, versucht es zuletzt category.php
. Wenn keine gefunden werden, wie gesagt, unsere
elseif ( is_category() && $template = get_category_template()
Bedingung gibt false zurück und die Bedingungen weiter unten werden ausgewertet. Die nächste Bedingung, die wahr klingelt, ist is_archive()
( denken Sie daran, dass is_archive()
true für Kategorie-, Tag-, Taxonomie-, benutzerdefinierte Post-Typ-Archive, autor- und datumsbezogene Seiten zurückgegeben wird ). Der gleiche Vorgang wie oben geschieht, diesmal jedoch mit archive.php
dem Suchen und Laden, falls vorhanden. Wenn archive.php
nicht vorhanden ist , bewertet die gesamte bedingte Anweisungen , um es den Standard welche Lasten index.php
durch get_index_template()
. Dies ist der ultimative Fallback für jede Seite
SCHLUSSFOLGERUNG UND ENDGÜLTIGE ANTWORT
Auch wenn Sie vielleicht denken, dass category.php
dies zu einem hohen Overhead führen wird, ist dies nicht der Fall. Durch die Zeit , die index.php
auf Ihrer Kategorie Seite geladen wird, ( kann unser Beispiel wieder verwenden ) für die noch nicht zugeordnet Kategorie hat Wordpress schon geschaut und versucht zu laden category-uncategorized.php
, category-1.php
, category.php
und archive.php
. Machen Sie also weiter und haben Sie Ihre schönen Vorlagen ( alle Vorlagen außerindex.php
) ( das ist Ihre OPTION 2 ). 10 schöne Vorlagen zu haben ist besser als eine, index.php
die so lang wie der Nil ist und mehr Logik enthält als das, was Albert Einstein in seinem Gehirn hatte ( was Ihre OPTION 1 ist ).
Wenn Sie zu Option 1 zurückkehren , ist es auch sehr wichtig, dass Sie die Vorlagen so kurz wie möglich, wartbar und lesbar halten. Es nützt wirklich nichts, eine Vorlage zu haben, die 0,0000001 Sekunden schneller sein kann, aber es ist ein totales Durcheinander und ein wahrer Albtraum, den man pflegen muss.
Am Ende hat Option 2 viel mehr Profis als Option 1.
index.php
Thema, dann wird es verlockend sein , es zu nennennilestein
;-)