Individuelles WordPress Single-Template für benutzerdefinierten Beitragstyp vom Plugin einbinden
Für jeden benutzerdefinierten Beitragstyp in WordPress können wir ein individuelles single.php Template anlegen und nur speziell für diesen Beitragstyp ausliefern lassen. Das hat den Vorteil, dass sich der Template-Aufbau und somit das Design, benutzerdefinierter Beitragstypen grundsätzlich vom Standard-Beitragstyp „Post“ unterscheiden kann.
Wie kann ich ein individuelles single.php Template für meinen benutzerdefinierten Beitragstyp anlegen?
Grundsätzlich ist dieser Vorgang recht einfach. Ein Beispiel: Wir haben einen neuen benutzerdefinierten Beitragstyp „Rezepte“ und möchten dafür ein individuelles single.php Template nutzen. Den benutzerdefinierten Beitragstyp haben wir mit register_post_type() folgendermaßen angelegt:
Wie wir im oberen Beispiel sehen können, haben wir für unseren benutzerdefinierten Beitragstyp den Identifier bzw. Post-Type Key „recipe“register_post_type( 'recipe', ...
festgelegt. Dieser Post-Type Key ist wichtig für die Erstellung des individuellen single.php Templates, welches wir in WordPress speziell für unseren „Rezept“ Beitragstyp nutzen wollen.
So funktioniert’s: Erstelle eine neue PHP-Datei mit dem Namen single-recipe.php
und lade diese Datei in das Hauptverzeichnis deines Themes ../wp-content/themes/dein-theme/single-recipe.php
. Nun wird immer automatisch dein individuelles Single-Template für deinen Rezept-Beitragstyp verwendet, wenn du gerade ein spezielles Rezept besuchst.
Würde dein benutzerdefinierter Beitragstyp den Post-Type Key „portfolio“ verwenden, dann müsste der Name deiner Single-Template Datei single-portfolio.php
lauten.
Wie kann ich das single.php Template vom Plugin laden?
Wie wir nun wissen, befindet sich das individuelle Single-Template eines benutzerdefinierten Beitragstypen immer im Hauptverzeichnis eines Themes, um von WordPress automatisch erkannt zu werden. Was können wir aber machen, wenn wir diese Template-Datei stattdessen von einem Plugin aus laden und einbinden möchten?
Für diesen Fall gibt es in der Tat eine Lösung. Mit Hilfe des WordPress-Filters single_template
können wir das Verzeichnis beeinflussen, von wo aus ein individuelles single.php Template geladen werden soll. Dafür ist die folgende Funktion sehr hilfreich:
In der oberen Funktion fragen wir zunächst den aktuellen Beitragstyp mit if( $post->post_type === 'recipe' ) {}
ab, um herauszufinden das wir den richtigen Beitragstyp treffen. In diesem Fall ist das, wie aus unserem Beispiel, der Beitragstyp „Rezept“.
Diese Funktion funktioniert so, dass bevorzugt ein vorhandenes „single-recipe.php“ Template aus dem Theme geladen wird. Nur wenn diese Datei nicht vorhanden ist, wird die „single-recipe.php“ Datei von unserem Plugin geladen und eingebunden. Das könnt ihr natürlich je nach Bedarf abändern.