12.5. Frontend-Loop mit benutzerdefinierten Artikeltypen

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:

You’re not allowed to see this content. Please log in first.

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:

You’re not allowed to see this content. Please log in first.