Oftmals besteht die Herausforderung eine Blätternfunktion (WordPress pagination) auf Seiten mit vielen Artikeln einzuführen. Es gibt dafür die Core Funktion von WordPress aber auch einige Plugins.

Folgende 3 Lösungen kann ich empfehlen, die fast ident funktionieren.

Die Standard Blätterfunktion


<div>
 <div><?php next_posts_link() ?></div>
 <div><?php previous_posts_link() ?></div>
 </div>

Emm Paginate

Diese kann auf der Seite von eric martin heruntergeladen werden.


<?php

if (function_exists("emm_paginate")) {
 emm_paginate();
 }

?>

WP Paginate

Ein leistungsfähiges WordPress Plugin das gleich wie emm paginate funktioniert, aber eine grafische Oberfläche besitzt. Diese gibt es ebenfalls bei eric martin.

Einbau

Bei allen drei Funktionen oder Plugins wie WP-Paginate muss die Query angepasst werden. Suchen Sie zuerst die Loop in der die Posts ausgegeben werden. Diese sieht so aus:


<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
 <div>
 <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
 </div>
 <?php endwhile; ?>

Passen Sie nun die Query an, indem Sie das SQL-Statement so umschreiben, dass auf jeder Seite nur eine gewisse Anzahl von Posts erscheint. Das legt den Grundstein für jede WordPress Blättern Funktion.


<?php

global $query_string;
query_posts( $query_string . '&posts_per_page=6' );

?>

Dieser Code wird direkt vor der Schleife eingefügt, da sonst andere Querys beeinträchtigt werden können. Mit der Funktion „wp_reset_postdata();“ kann die Query übrigens wieder zurückgesetzt werden.

Beispielsweise kann das Statement auch mit einer Sortier-Funktion oder Shuffle-Funktion erweitert werden. Bei Verwendung dieser Query „&posts_per_page=6&orderby=rand“ ist zu beachten, dass das Blättern nicht mehr funktioniert, weil auf jeder Seite die Query wieder geshuffled wird. Das eigenet sich also am besten, wenn alle Ergebnisse auf einer Seite dargestellt werdn.

404 Seite

Nach diesem Einbau ist bei mir beim Blättern die 404 Seite gekommen. Dagegen musste ich allerdings nur unter

  • Einstellungen
  • Lesen
  • Blogseiten zeigen maximal

auf meine gewünschte Seitenanzahl 6 stellen. Ergo die gleiche Anzahl wie im SQL Statement.