Viele Entwickler, die bereits ein Theme entwickelt haben, kennen den so genannten „Loop“. Er sorgt dafür, dass alle Beiträge eines Artikeltyps in einer while
-Schleife durchlaufen und dargestellt werden. WordPress benutzt den Loop wie folgt:
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
...
}
}
Nicht alle benutzerdefinierten Artikeltypen werden angelegt um im Frontend angezeigt zu werden. Ist es jedoch der Fall, so können Sie sich einen eigenen Loop erstellt.
Im Beispiel gehen wir davon aus, dass Sie einen benutzerdefinierten Artikeltyp namens book
erstellt haben. Wir ergänzen also das Beispiel aus Kapitel Benutzerdefinierten Artikeltypen erstellen um einen Shortcode:
Vollständiges Beispiel auf Github ansehen
Fügen wir nun den Shortcode [latest_book_posts]
auf einer Seite ein so erhalten wir als Ausgabe eine Liste der aktuellsten zehn Artikel des benutzerdefinierten Artikeltyps book
.
Sie finden in den Dateien wp-includes/post.php
und wp-includes/post-template.php
weitere Funktionen die Sie – neben the_title()
nutzen können um Beiträge im Frontend darzustellen.
Wichtiges Beispiel
Im ersten Beispiel haben Sie gesehen, dass die Funktion the_title()
keinen Artikel-ID oder ähnliches als Übergabeparameter bekommt. Dies liegt daran, dass jeder neue Loop-Durchlauf (mit new WP_Query()
) die globale Variable $wp_query
ändert. Dadurch ist sichergestellt, dass Funktionen wie the_title()
wissen um welchen Artikel im Loop es sich gerade handelt.
Das hat auch Nachteile, wie folgendes Beispiel zeigt: