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
;-)Speichern von Datei-E / A-Vorgängen .
Sie können auf dieser Ebene so viel wie möglich sparen, wenn Sie möchten, aber am Ende hängt alles von Ihrer Codierungs- / Serverkonfiguration ab und so weiter.
Die statischen / dynamischen Dateien können / würden / sollten auch zwischengespeichert werden (möglich auf Serverebene oder per Plugin / eigenem Code). Dies hilft Ihnen auch dabei, sich weniger Sorgen zu machen, wenn es um kleinere Dinge wie Dateien geht, die mit Code voll sind, oder um die Menge von Vorlagen.
Vorlagenreduzierung Bei
Ihrem Ansatz, die Verwendung von Vorlagen zu reduzieren, ist es nicht immer "weniger ist mehr".
Hier noch ein Beispiel (auch von ialocin erwähnt):
Verwenden Sie eine Standardschleife (für
front-page.php/index.php/page.php/single.php
und andere Vorlagen natürlich)Und verwenden Sie dieses Beispiel für
content.php
(das sich im Themenordner befinden sollte)Und (im Include-Ordner) können Sie Dateien wie
content-front.php / content-single.php
und so weiter verwenden.Diese
template_parts
(die in denloop
, wie in den oben genannten Dateien erwähnt, enthalten sein werden) enthalten den Code, den Sie für diese Vorlagendateien haben möchten.Dieser Ansatz scheint für eine Site weniger empfindlich zu sein, wenn nur ein kleiner Fehler gemacht wird. Weil ppl hauptsächlich in den Vorlagenteilen (in diesem Unterordner) funktioniert. Natürlich hängt alles von der Art des Fehlers ab, aber ich denke, Sie wissen, was gemeint ist.
Imho ist es auf diese Weise auch schneller / einfacher, Fehler auszulösen und ein wenig einfacher zu referenzieren.
quelle
Kurz und schmerzlos würde ich empfehlen, Option 2 zu wählen.
Warum? Denn dafür ist die WordPress- Vorlagenhierarchie da. Ich kann aus Ihrer Frage keinen Grund erkennen, sich vom Konzept der Vorlagenhierarchie zu unterscheiden.
Last but not least kann es in einigen Projekten sinnvoll sein, darüber nachzudenken, sogar den Schleifenteil der Vorlagendateien über zu erhalten
get_template_part()
.quelle