get_template_part vs. Aktions-Hooks in Themen

Es scheint mir, dass beide die Möglichkeit für den Endbenutzer bieten, ein Thema zu ändern, ohne die Themendateien tatsächlich zu bearbeiten (über untergeordnete Themen).

Meine Frage ist, ist eine Methode gegenüber der anderen bevorzugt.

Nehmen wir zum Beispiel ein Thema, an dem ich gerade arbeite. Ich versuche zu entscheiden, ob ich mit Schablonenteilen von Hooks gehen soll.

 <div id="sitecontainer" class="sitecontainer" >  

Das obige ermöglicht dem Benutzer des Themas, jeden Abschnitt des vorhandenen Codes zu ersetzen, indem einfach eine passend benannte Datei in ihrem untergeordneten Themenordner erstellt wird und neuer Code vor / nach jedem vorhandenen Abschnitt auf die gleiche Weise hinzugefügt wird – die Vorher-Nachher-Vorlage Teildateien sind überhaupt nicht im übergeordneten Thema vorhanden und dienen nur dazu, ihnen das Einfügen von Code zu ermöglichen – und für diese Methode müssen sie Hooks / Filter nicht verstehen, um dies zu erreichen.

Ich könnte das natürlich auch mit Haken und Filtern erreichen.

Hat die Verwendung von Hooks / Filtern einen Vorteil? Bedenkt man, dass die Zielgruppe, die dies verwenden wird, ist sicherlich nicht Code versiert. Ich kann ihnen relativ grundlegende statementen geben, denen sie folgen können, um die Schablonenmethode zu verwenden, aber wird fast sicher den Teufel von ihnen mit Haken verwirren.

Oder gibt es Situationen, in denen die eine besser wäre als die andere innerhalb des gleichen Themas?

Solutions Collecting From Web of "get_template_part vs. Aktions-Hooks in Themen"

Ich bevorzuge Hooks, da sie flexibler sind: Sie können sie aus der functions.php Datei Ihres Themes, aber auch aus Plugins herausholen. Ich versuche so viel Logik in Plugins zu stecken, dass die Themen meist Layout-Sachen enthalten.

Wenn Sie einen Aktions-Hook verwenden, können Sie in diesem Hook-Handler immer noch get_template_part() . Dies gibt Ihnen das Beste aus beiden Welten. Sie könnten wahrscheinlich sogar einen Standard-Hook erstellen, der get_template_part() , so dass Leute, die wenig Erfahrung mit der get_template_part() haben, zusätzliche Dateien hinzufügen können und andere diesen Hook entfernen können, wenn sie dies nicht möchten.

In Bezug auf die performance: get_template_part() verwendet ( in locate_template() ) file_exists() ein, zwei oder vier Mal (je nachdem, wie Sie es nennen). Es scheint, dass file_exists() sehr schnell ist und Caching in PHP und vielleicht sogar im Betriebssystem verwendet. Das ist wahrscheinlich kein Problem.

Es ist (relativ) einfach, functionen aus Hooks im Child-Theme zu entfernen, aber viel schwieriger, um ungewollte Parent-Templates zu ignorieren.

Im Wesentlichen arbeitet man mit hooks näher an der PHP-Seite und das Arbeiten mit Templates ist näher an der HTML-Seite. Ich verwende Hybrid-Eltern-Thema, das sehr hakenorientiert ist. Es ist eine Glückseligkeit, bis Sie die Vorlage eines Elternteils loswerden müssen.

Für Benutzer, die nicht technisch versiert sind, ist keine sehr gute Option. Warum sollten sie sich ohnehin mit solchen Themeneinbauten anlegen?

PS beachten Sie auch performancesprobleme. Stuff mit Hooks passiert im Speicher, Stuff mit Templates braucht viele Disk-Lookups. Vor allem, wenn Sie etwas wie in Ihrem Beispiel schreiben.

PPS nicht jedermanns Sache … aber anstatt Elternthema von Grund auf neu zu schreiben, warum nicht ein vorhandenes Elternthema nehmen und dem Kind ein einfaches Kindthema zur Verfügung stellen?

Ich würde sagen, dass der Hauptunterschied die Lesbarkeit ist. Wenn Sie mehrere, gut benannte Schablonenteile sehen, können Sie leicht erfassen, was passiert. Wenn Sie nur einen Haken sehen, müssen Sie den Rest des Themas durchsuchen, um festzustellen, was an den Haken angehängt ist.