WordPress Block Pagination in Abfrage Loop nutzen

von

am

|

geschätzte Lesezeit:

5 Minuten

Disclaimer: Dieser Beitrag ist älter als zwei Jahre. Es könnte also sein, dass auch sein Inhalt in Teilen bereits veraltet ist.

WordPress Block Paginierung: Seitennummern sind auf WordPress Seiten so sinnvoll wie in Büchern.

Seit WordPress 5.8 gibt es einen Block, er heißt (Query) Pagination. Oder auf Deutsch: Seitennummerierung für Abfragen. Allerdings erscheint dieser Block nicht unter all den Design oder Theme Blöcken, die WordPress im Backend zur Verfügung stellt. Zu finden ist er im Backend nur, wenn das Gutenberg Plugin aktiviert ist.

Und doch ist dieser WordPress Pagination Block vorhanden. Er findet sich in dem Verzeichnis wp-includes, dort im Verzeichnis aller Blöcke (blocks) – und macht gleich mehrere Unterverzeichnisse aus. Also muss er doch auch irgendwie auf einer Seite zu nutzen sein. Dieser Beitrag zeigt, wie Sie ihn einsetzen können.

WordPress Pagination Block: Warum und wozu?

Die Paginierung, das heißt die Seitennummerierung, ist immer dann wichtig, wenn die Anzahl der Beiträge den Wert übersteigt, der in den WordPress Einstellungen > Lesen festgelegt ist. »Blogseiten zeigen maximal« heißt es dort und der Standardwert ist 10 Beiträge. Das bedeutet, dass jede Archivseite, so auch die Blogseite, immer nur zehn Beiträge ausgibt.

Kommt ein elfter Beitrag hinzu, erstellt WordPress automatisch eine neue Seite. Auf die rutscht der erste Beitrag, den Sie veröffentlicht haben. Und ist auch diese Seite irgendwann voll, erstellt WordPress für Sie wieder eine neue Seite. So geht es immer weiter bis zum Sankt-Nimmerleinstag.

Damit Sie und Ihre Leser/innen zwischen diesen Seiten hin- und herwechseln können, gibt WordPress für Sie die Paginierung aus. Dabei entscheidet das Theme, wie genau sie aussehen soll. Meist beinhaltet sie Links zur vorherigen und zur nächsten Seite sowie anklickbare Ziffern für die genaue Anzahl an Seiten, die es bereits gibt.

Warum zeigt WordPress den Seitennummern Block nicht im Backend an?

Diese Frage habe ich mir zum ersten Mal gestellt, als ich über all die Beitrags-Blöcke schrieb, die WordPress seit dem Sommer 2021 so anbietet. Ohne den Abfrage Loop Block und ohne die Option des Full Site Editing lassen sich diese Beitrags-Blöcke zwar nutzen, sind aber wohl für die meisten Benutzer/innen nur bedingt hilfreich. Da hätte doch der Pagination Block nicht weiter geschadet, oder?

Eine offizielle Erklärung, warum der Pagination Block nicht im WordPress Backend neben dem Website Logo oder dem Archive Titel oder dem Beitragskategorien Block erscheint, kenne ich nicht. Ich kann mir nur vorstellen, dass WordPress diesen Block ohnehin nur für sinnvoll im Kontext des Full Site Editing hält. Nur in diesem Zusammenhang lässt sich schließlich eine eigene Vorlage für die Blog- oder die Archivseiten erstellen. Und dort braucht man die Paginierung im Wesentlichen.

Ich aber habe die Möglichkeit der Seitennummerierung im Rahmen des Abfrage Loop Blocks vermisst. Denn der lässt sich ja auch ohne Full Site Gedöns einsetzen. Auf normalen Seiten oder gar in Beiträgen. Und dabei halte ich die Option der Seitennummern nicht nur für sinnvoll, sondern in Teilen auch für notwendig.

Abfrage Loop Block mit Paginierung auf Seiten

Nehmen wir ein eigenes Beispiel: Auf meiner Startseite stelle ich immer zwei meiner Kursangebote dar. Die erscheinen dort nach dem Zufallsprinzip. Würde ich diese Seite neu erstellen, könnte ich statt eigener Codierung den Abfrage Loop Block nutzen.

Auf das, was man mit dem Abfrage Loop Block alles machen kann, bin ich in meinem Beitrag bei Hosteurope ausführlich eingegangen. Wie man sich für diese Abfragen Blockvorlagen erstellen kann, habe ich kürzlich erst auf diesem Blog gezeigt.

In meinem Fall ist es also eine dieser gruppierten Abfragen, die meinen Custom Post Type »Kurse« ausgibt. Derer gibt es insgesamt sechs. Ich würde aber immer nur drei auf einmal zeigen wollen. Die Paginierung dient dann dem Zweck, dass Sie sich auch die fehlenden drei weiteren Kursangebote anzeigen lassen können.

Auf einer WordPress Seite, die Angebote darstellt: Der Pagination Block im Rahmen des Abfrage Loop Blocks.
Screenshot: Diese gruppierte Abfrage nutzt den WordPress Pagination Block

Nun ist das hier nur ein Bild. Ein Screenshot von meiner Testinstallation, mit der ich mögliche Änderungen ausprobiere. Hier navigiert also nichts. Viel wichtiger ist aber: Auf der Testinstallation nutze ich keine zusätzlichen Funktionen. Also auch nicht das Gutenberg Plugin. Und doch nutze ich dort einen Block, den es im Backend gar nicht gibt. Wie mache ich das?

Den WordPress Pagination Block als Code nutzen

Die Idee, den Block für die Seitennummerierung auch ohne Gutenberg Plugin einzusetzen, ist mir im Zusammenhang mit einer anderen Testinstallation gekommen. Nämlich jener, auf der ich seinerzeit für meinen Hosteurope-Beitrag getestet habe. Dort funktionierte trotz Abschaltung des Plugins die Paginierung noch immer. Warum? fragte ich mich. Und stellte dann fest, dass

  1. der Block in den WP Includes vorhanden ist und
  2. sich sein HTML-Code auch an anderer Stelle einsetzen lässt.

Für solche Erkenntnisse braucht es

  1. den Blick auf den Server via FTP-Programm wie Filezilla und
  2. die Code-Ansicht der Seitenbearbeitung.

Der Blick auf die Verzeichnisstruktur Ihres Servers findet also fern von Ihrer WordPress Installation statt. Zur Anzeige der Code-Ansicht hingegen bleiben Sie im WordPress Backend. In Ihrer Seitenbearbeitung wählen Sie über die drei vertikalen Pünktchen oben rechts neben dem Veröffentlichen-/Aktualisieren-Button das Menü Ansicht anpassen. Dort können Sie vom visuellen zum Code Editor wechseln.

Der Code Editor zeigt alle Ihre Blöcke als HTML inklusive aller HTML-Kommentare an. Und es sind eben diese HTML-Kommentare, die den Anfang und das Ende eines Blocks markieren.

<!-- wp:query-pagination -->
<div class="wp-block-query-pagination"><!-- wp:query-pagination-previous /-->

<!-- wp:query-pagination-numbers /-->

<!-- wp:query-pagination-next /--></div>
<!-- /wp:query-pagination --></div>

Wollen Sie diesen Code nun nutzen, können Sie dies nur im Rahmen eines Abfrage Loop Blocks tun. Ohne Abfrage Loop wüsste WordPress gar nicht, worauf die Paginierung sich beziehen soll.

Das heißt, Sie erstellen eine Abfrage – gruppiert oder nicht gruppiert, völlig egal – und schalten dann um auf den Code Editor. Der Code für die Paginierung gehört ans Ende der Abfrage. Mit anderen Worten: Sie fügen ihn vor dem schließenden Query-Kommentar ein.

Das Ganze sieht dann wie folgt aus:

<!-- wp:query-pagination -->
<div class="wp-block-query-pagination"><!-- wp:query-pagination-previous /-->

<!-- wp:query-pagination-numbers /-->

<!-- wp:query-pagination-next /--></div>
<!-- /wp:query-pagination --></div>

<!-- /wp:query --></div>

Danach können Sie den Code Editor wieder verlassen. Gutenberg wird Sie dann auffordern, den ganzen Abfrage Loop Block wiederherzustellen. Denn der enthält nun »unerwarteten oder ungültigen Inhalt«.

Also stellen Sie den Block wieder her, indem Sie auf den Button Versuch der Blockwiederherstellung klicken. Notfalls klicken Sie auch zweimal darauf, falls Gutenberg ein bisschen zickt. Aber spätestens dann sehen Sie Ihre Abfrage mit passender Paginierung.

Gespannt bin ich, wie WordPress 5.9 mit dem Thema umgehen wird. Das Update scheint sich aber vor allem auf das Full Site Editing zu beziehen. Wir werden es sehen.


Beitragsbilder: Britta Kretschmer

2 Antworten zu „WordPress Block Pagination in Abfrage Loop nutzen“

  1. Klaus

    Vielen Dank, sehr hilfreicher Artikel. Hoffen wir, dass Full Site Editing schnell real wird.

  2. Corinna

    Nun sind wir schon in 2024 angekommen – aber dein Beitrag ist top – der Abfrage Loop hat noch immer keine Paginierung – zumindest nicht bei mir. Aber mit deinem Tip läuft es jetzt rund.
    Danke

Schreibe einen Kommentar

Die im Rahmen der Kommentare angegebenen Daten werden von mir dauerhaft gespeichert. Cookies speichere ich nicht. Für weitere Informationen siehe bitte meine Datenschutzerklärung.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert