WordPress Templates vom Plugin-Verzeichnis einbinden und laden
WordPress bietet die Möglichkeit benutzerdefinierte Templates zu erstellen und diese durch das Hinzufügen in das Theme-Root-Verzeichnis verfügbar zu machen. Diese Templates lassen sich dann für den Beitragstyp „Seiten“ unter Seiten-Attribute im DropDown-Feld „Templates“ auswählen und für eine Seite nutzen.
Damit eine PHP-Datei als WordPress Template erkannt wird, muss sie das folgende PHP-Kommentar am Anfang der Datei beinhalten. Das Resultat sieht dann so aus:
Aber wie wird es gehandhabt, wenn man solch ein WordPress Template über ein Plugin einbinden und laden möchte? Dieser Artikel zeigt dir einen einfachen Weg, wie wir das tun können.
Wie kann ich ein benutzerdefiniertes Template vom Plugin laden?
Für diesen Zweck können wir den WordPress-Filter page_template
nutzen. In der zugewiesenen PHP-Funktion, fragen wir zunächst über locate_template() ab, ob das entsprechende Template bereits im aktivierten WordPress Theme / Child Theme vorhanden ist. Ist das der Fall, dann binden wir das Template vom Plugin aus nicht ein! Denn Templates sollten immer über das Child-Theme überschreibbar sein.
Ist das Template im Theme oder Child Theme nicht vorhanden, verweisen wir auf den Pfad im Plugin-Verzeichnis, wo unser benutzerdefiniertes Template abgelegt ist:
Den Template-Namen für die Template-Auswahl ändern
Wenn wir im WordPress Backend eine Seite bearbeiten. Können wir unter Seiten-Attribute im Auswahlfeld "Templates" alle verfügbaren Templates auswählen und für eine spezielle Seite nutzen. Der folgende Weg zeigt, unter Verwendung des WordPress-Filter theme_page_templates
, wie wir den Namen des Templates, welches aus dem Plugin-Verzeichnis geladen wird, ändern können. Auch in diesem Fall tun wir das nur, sollte dieses Template nicht im Theme oder Child Theme vorhanden sein.
Sollte es ausdrücklich erwünscht sein, dass ein Theme oder Child Theme das Template aus dem Plugin-Verzeichnis nicht überschreiben darf, so müsst ihr die Abfrage if( ! locate_template( 'page-my-template.php' ) ) {
aus den beiden oberen Funktionen entfernen. In diesem Fall wird immer das Plugin-Template geladen, auch wenn ein Template mit demselben Namen im Theme vorhanden sein sollte.
Mehrere WordPress Templates aus dem Plugin-Verzeichnis laden
Sollten wir gleich mehrere verschiedenen Templates aus dem Plugin-Verzeichnis einbinden und laden wollen, dann können wir das ganz einfach über den folgenden Weg tun. Hierbei handelt es sich um dieselbe Methode wie oben, nur das wir hier zunächst alle Template-Dateien in einem Array definieren und dann über eine foreach-Schleife einbinden: