WordPress-Theme-Tutorial für Anfänger – Teil 4: Der Post-Loop
In dieser Lektion des WordPress-Theme-Tutorials für Anfänger gehen wir detailliert auf die „Post-Schleife” in WordPress ein, was sie ist, wie sie aussieht, warum wir sie verwenden und wie wir auf Beiträge zugreifen. Anschließend werden wir uns an die Implementierung der Schleife in unserem Thema.
Die Postschleife
Wenn Sie mit PHP vertraut sind, erkennen Sie vielleicht, dass eine „Schleife” eine Technik ist, bei der jedes Element in einem Array oder Objekt mit for
, foreach
oder durchlaufen wird while
. Die Schleife in WordPress funktioniert genau so. Aber wir werden die WordPress-eigenen Funktionen zum Schleifen verwenden, um einige zusätzliche Vorteile und Vereinfachungen zu erhalten.
Zu jedem Zeitpunkt hat WordPress die Beiträge bereits für Sie abgefragt – je nachdem, auf welcher Seite Sie sich gerade befinden. Wenn Sie sich auf einer Kategorieseite befinden, hat WordPress bereits alle Beiträge abgefragt, die dieser Kategorie zugeordnet sind, und wenn Sie sich auf einer einzelnen Beitragsseite befinden, hat WordPress diesen einen Beitrag bereits für Sie abgerufen.
Wenn wir auf die Beiträge zugreifen möchten, die WordPress in unseren Vorlagen abgefragt hat, fügen wir die Schleife hinzu. Innerhalb der Schleife haben wir Zugriff auf jeden Beitrag. Und für jeden Beitrag entscheiden wir, was wir zeigen oder tun.
Hinweis: Sogar in Einzelpost- oder Einzelseitenvorlagen fügen Sie eine Schleife hinzu, obwohl wir wissen, dass sie nur einen Post enthält! Die Schleife läuft einfach nur einmal.
Hier ist die WordPress-Schleife in ihrer ganzen Pracht:
while (have_posts()): the_post();
// Access to each post here
endwhile;
Dieses Stück Code macht zwei Dinge. Der while
Teil (einschließlich des endwhile
) ist der Schleifenteil, der sich wiederholt, solange noch Posts übrig sind. Der zweite Teil ist der the_post()
, der einen vereinfachten und intuitiven Zugriff auf das Post-Objekt innerhalb der Schleife einrichtet. Wir werden später mehr darüber erfahren.
Es hat sich bewährt, die Schleife in einen if
Check zu packen, der überprüft, ob es tatsächlich Posts gibt, die durchlaufen werden müssen. Dann können wir auch optional eine Nachricht anzeigen, wenn es keine gibt. Die Beitragsabfrage könnte leer sein, wenn Sie zu einem leeren Kategoriearchiv gehen oder versuchen, nach etwas zu suchen, das keine Treffer hat. Dies ist eine bessere Version der Schleife:
if (have_posts()) {
while (have_posts()): the_post();
// Access to each post here
endwhile;
} else {
?><p>No posts, sorry.</p><?php
}
Machen Sie sich mit diesem Codeabschnitt vertraut, da Sie dies jedes Mal wiederholen werden, wenn Sie auf Beiträge zugreifen möchten! Lassen Sie uns die Schleife in unserem Thema implementieren.
Implementieren der Schleife in unserem Thema
Lassen Sie uns die Schleife in unsere index.php
einfügen und den Dummy-Text ersetzen.
<?php get_header(); ?>
<?php
if (have_posts()) {
while (have_posts()): the_post();
the_title();
endwhile;
} else {
?><p>No posts, sorry.</p><?php
}
?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Ich habe eine Funktion hinzugefügt, die the_title()
innerhalb der Schleife aufgerufen wird und den Beitragstitel wiedergibt. Dies ist nur so, dass wir die Schleife in der Praxis sehen können. Keine Sorge, wir werden im nächsten Schritt alles über den Zugriff auf alle eigentlichen Beitragsinformationen erfahren.
Mal sehen, was jetzt in WordPress passiert. Aktualisieren Sie die Startseite. Abhängig von Ihren Einstellungen und Inhalten sollten einige Titel angezeigt werden. In meinem WordPress habe ich den Standard-Post „Hello world!” und ein weiterer von mir erstellter Beitrag mit dem Titel „Dies ist ein weiterer Beitrag”. Das bekomme ich auf der Startseite:
Wenn Sie versuchen, eine einzelne Beitragsseite zu besuchen, sollten Sie nur einen Titel sehen, den Titel des angezeigten Beitrags. Nett!
Für die Neugierigen…
Wenn Sie neugierig sind, was die Schleife durchläuft und welche Parameter WordPress für diese Abfrage verwendet hat, können Sie es sich ansehen. Die globale Variable, auf die sich die Schleife bezieht, heißt $wp_query
. Sie müssen es global definieren, um darauf zugreifen zu können. Versuchen Sie es mit var_dump()
, um den gesamten Inhalt auszudrucken. Die Schleife durchläuft die $wp_query->posts
Eigenschaft.
global $wp_query;
var_dump($wp_query);
Fügen wir unserer Schleife in ein wichtiges Detail hinzu index.php
; eine Möglichkeit für den Benutzer, zur nächsten und vorherigen Seite von Beiträgen zu navigieren.
Denken Sie daran, dass die Schleife die Anzahl der Beiträge abruft, die in Ihren WordPress-Einstellungen > Lesen definiert sind, wenn Sie sich auf einer Seite befinden, die mehrere Beiträge anzeigt. Wenn in der Schleife mehr Beiträge verfügbar sind als die hier definierte Anzahl, brauchen wir eine Möglichkeit, zwischen den Seiten zu navigieren. Dazu können wir die Funktion verwenden the_posts_pagination()
.
Diese Funktion akzeptiert einige Parameter, um ihre Ausgabe anzupassen. Sie können die Anzahl der Seiten zwischen den Ellipsen definieren (bei vielen Seiten). Sie können auch festlegen, wie die Texte für die Links „Zurück” und „Nächste” aussehen sollen. Ich werde es ohne Parameter hinzufügen, um die Standardeinstellungen zu übernehmen, aber Sie können es anpassen, wenn Sie möchten.
...
while (have_posts()): the_post();
the_title();
endwhile;
the_posts_pagination();
} else {
...
Diese Funktion gibt absolut nichts aus, wenn weniger oder gleich viele Beiträge als Anzahl der Beiträge pro Seite eingestellt sind. Machen Sie sich also keine Sorgen, wenn Sie denken, dass Sie etwas falsch gemacht haben, weil Sie keine Ausgabe sehen. Sobald es mehr Posts als Posts pro Seite gibt, gibt diese Funktion ein div, eine Überschrift für Screenreader (die Sie normalerweise mit CSS ausblenden) und eine Reihe von Paginierungslinks aus.
Jetzt, da wir wissen, wie wir Zugriff auf jeden Beitrag erhalten, den WordPress für uns gefunden hat, besteht der nächste Schritt darin, zu lernen, wie wir zeigen können, was wir von jedem Beitrag erwarten; innerhalb der Schleife.