Pagination in WordPress-Theme einbauen

WordPress

Vor einiger Zeit habe ich im Netz nach einer guten Seiten-Navigation für mein WordPress-Theme gesucht. Dabei bin ich auf diesen Beitrag bei Benjamin Vötterle gestoßen. Er hat sich die Mühe gemacht und den PHP-Code für eine WordPress-Pagination geschrieben. Diesen Code habe ich mir genommen, verbessert, verschlankt und an meine Bedürfnisse angepasst. Herausgekommen ist dabei folgende Pagination:

Hier kannst du ein Paket aus der PHP-Datei und dem zugehörigen Stylesheet herunterladen. Den Quellcode musst du einfach in deine functions.php kopieren oder anderweitig in dein WordPress-Theme einbinden.

Um die Pagination nutzen zu können, musst du folgenden Code an die passende Stelle einfügen:

<?php if(function_exists('pagination')) pagination(); ?>

Die Funktion kann auch parametriert aufgerufen werden:

<?php if(function_exists('pagination')) pagination($start_end_links, $middle_links); ?>

Der erste Parameter gibt dabei an, wieviele Links immer am Anfang und am Ende der Pagination angezeigt werden sollen. Der zweite Parameter bestimmt, wieviele Links “um den Link der aktiven Seite” angezeigt werden. Für den zweiten Parameter empfiehlt sich deshalb eine ungerade Zahl.

P.S.: Nicht vergessen, den alten Code für die herkömmliche Navigation auszukommentieren bzw. zu löschen ;)

Kommentare

  1. Alex L. sagt:

    Die Thematik Seitennummerierung im WordPress-Blog machte mir neulich ebenfalls viel Spass und ich habe eine Pagination im Blog zum ersten Mal eingesetzt.

    Jedoch hatte ich dafür ein Plugin namens WP-Page Numbers verwendet. Bei vielen Unterseiten im Blog ist eine Seitennummerierung nicht verkehrt.

  2. ap sagt:

    Vielen Dank für den Code, den ich sofort in meine functions.php gepackt habe. Ich hatte drauf verzichtet, weil ich kein Plugin einsetzen wollte. So ist mir das lieber. Die Performance hat sich lt. YSlow nicht verschlechtert. Das ist bei den Plugins für diesen Zweck nicht immer so. Prima!

  3. Luigi sagt:

    Feine Sache, feine Sache! Vielen Dank für diesen tollen Code!

  4. plerzelwupp sagt:

    So, das hab ich bei mir nun auch umgesetzt – eine feine Sache. Herzlichen Dank dafür :-)

    mit “$wp_query->max_num_pages;” müssten doch alle Seiten geladen werden – verstehe ich das richtig? Ich wundere mich, dass nicht alle Seiten angezeigt werden(?)

  5. Patrick sagt:

    Wie meinst du das mit allen Seiten?
    Je nachdem, welche Parameter du beim Funktionsaufruf eingibst, werden Seiten per [...] ausgeblendet, weil die Navigation später nicht mehr alles aufnehmen kann.

  6. plerzelwupp sagt:

    Ja das weiß ich wohl. So doof bin ich nun auch nicht ;-)

    Nein, es werden nicht alle Artikel (Seiten) erfasst. Da fehlt noch ein ganzer Schwung (am Ende).

  7. Patrick sagt:

    Hmm… eigentlich sollte das so laufen… bei mir läuft das wunderbar :)

  8. plerzelwupp sagt:

    Um genau zu sein – die ersten 21 Artikel (chronologisch gesehen) fehlen am Ende der Pagination. Bei 8 Artikeln pro Seite fehlen ergo 3 Seiten.

    Sehr seltsam.

  9. Patrick sagt:

    Also wenn ich auf deine Seite gehe und dort auf die letzte Seite klicke, dann ist es auch die letzte mögliche Seite. Durch manuelles umschreiben der URL auf eine Seite weiter, bekommst du ein Error 404, also muss bei dir irgendwas falsch laufen.

  10. plerzelwupp sagt:

    Ich hab den Fehler gefunden.

    Mensch, das ist aber auch bekloppt: In meinem Theme kann ich einstellen, wieviel Beiträge pro Seite eingestellt werden – das Stand auf 8.

    In WordPress (unter Einstellungen/ Lesen) waren allerdings 10 eingestellt.

    Sobald ich diese beiden Werte angleiche, stimmt das Ganze.

    Ist aber auch bekloppt, dieses zusätzliche Theme-Feature im WP-Frontend – das hab ich ganz vergessen. Außerdem wundert’s mich, dass die Theme-Macher da eine weitere Variable verwenden.

    Naja egal – es funzt – herzlichen Dank :-)

  11. [...] Anweisungen in der Plugin-Beschreibung befolgt habe. Ehrlicherweise gibt es nun zum ersten Mal eine Seitenpaginierung in diesem Blog und ich würde es gerne behalten, da ich einen Gefallen daran finde. Abgesehen [...]

Hinterlasse einen Kommentar