WordPress Pagination Eine Einführung

In diesem Artikel / Tutorial betrachten wir die Grundlagen der WordPress-Paginierung, die Standardeinstellung für die Paginierung und wie sie verbessert werden kann.


Das Standard-Paginierungsschema

Ich verwende das standardmäßige WordPress Twenty Eleven-Design als Referenz. Auch wenn Sie es nicht verwenden, finden Sie es in Ihrem Themeverzeichnis.

Beiträge pro Seite

Vergessen Sie nicht, dass WordPress bei der Paginierung wissen muss, wie viele Elemente auf jeder Seite aufgelistet werden sollen. Dieser Wert wird auf der Seite Admin -> Einstellungen -> Leseeinstellungen festgelegt.

Der Wert "Blogseiten wird maximal angezeigt" wird von WordPress verwendet, sofern Sie ihn nicht überschreiben, z. B. wenn Sie eine benutzerdefinierte Abfrage verwenden.

Der Standard-Paging-Code

Ein typisches Beispiel für das Anzeigen einer Liste von Beiträgen ist das Anzeigen aller Beiträge in einer Kategorie. Die Anzeige von Kategorie-Posts wird von der Template-Datei category.php übernommen. Beim Thema Twenty Eleven übergibt die Kategorieseite die Anzeige der Paginierung an eine Funktion mit dem Namen twentyeleven_content_nav, die in functions.php zu finden ist.

 Funktion twentyeleven_content_nav ($ nav_id) global $ wp_query; if ($ wp_query-> max_num_pages> 1):?>   

Der obige Code könnte genauso gut direkt in category.php aufgenommen worden sein, aber die Designer von Twenty Eleven haben sich dazu entschlossen, es zu einer Funktion zu machen, sodass es aus vielen Vorlagendateien aufgerufen werden kann. Der größte Teil des Codes ist für Layout- und Internationalisierungszwecke bestimmt, aber wie folgt:

  • Mit dem Wert der globalen Abfragevariablen $ wp_query-> max_num_pages prüfen wir, ob wir mehr als eine Seite haben. Dadurch wird vermieden, dass der gesamte Paging-Block angezeigt wird, wenn nur eine Seite mit Beiträgen vorhanden ist
  • Die WordPress-Funktion next_posts_link zeigt einen Link zur nächsten Seite der Beiträge und nimmt ein optionales Argument für benutzerdefinierten Linktext
  • In ähnlicher Weise zeigt die WordPress-Funktion previous_posts_link einen Link zur vorherigen Seite mit Beiträgen

Und so sieht es mit einer Einstellung von zwei Posts pro Seite aus.

Es ist ziemlich einfach, aber es ist funktional. Die Probleme bei dieser Anzeige sind, dass es keine Möglichkeit gibt, festzustellen, auf welcher Seite Sie sich befinden oder wie viele Seiten insgesamt vorhanden sind.

Bei den Standardeintragungen von WordPress ist zu beachten, dass sie in umgekehrter Reihenfolge ausgeführt werden:

Da Post-Abfragen normalerweise in umgekehrter chronologischer Reihenfolge sortiert werden, zeigt next_posts_link () normalerweise auf ältere Einträge (gegen Ende des Satzes) und prev_posts_link () auf neuere Einträge (gegen Anfang des Satzes)..

Dieses Verhalten kann geändert werden, wenn Sie eine benutzerdefinierte Abfrage erstellen. Beachten Sie, dass im obigen Beispiel zwei Paging-Blöcke verwendet wurden: einer vor dem Beginn der Nachschleife und einer nach dem anderen. Es ist immer eine nette Geste, wenn Sie oben und unten paginieren, damit der Benutzer nicht zu viel scrollen muss.

Beispiele:

So zeigen Sie im Link-Text "Gehe zu nächster Seite" an:

 next_posts_link ('Gehe zur nächsten Seite ...');

So zeigen Sie ein Bild anstelle von Text an:

 $ previous_posts_image = ''; previous_posts_link ($ previous_posts_image);

Alternative

Es gibt eine Alternative zur Verwendung der separaten Funktionen next_posts_link und previous_posts_link. Dies ist die Funktion posts_nav_link. Grundsätzlich gibt diese Funktion sowohl die vorherigen als auch die nächsten Links auf einen Schlag aus, wobei optionaler Link-Text und Link-Trennzeichen angegeben werden können.

Die Standardausgabe:

 posts_nav_link ();

Und mit benutzerdefiniertem Linktext und einem Trennzeichen:

 posts_nav_link (':::', '<< Newer Posts', 'Older Posts >> ');

Ich schlage vor, die separaten Funktionen next_posts_link und previous_posts_link zu verwenden, da Sie so mehr Kontrolle über die Platzierung Ihrer Links haben und Ihren Code verständlicher machen können.


Paging einzelner Beiträge

Bei der Anzeige einzelner Posts ist es schön, einen Link zu den vorherigen und nächsten Posts in der Sequenz anzuzeigen. Die Vorlagendatei single.php behandelt das mit dem folgenden Code:

 

Das wird dir das geben:

Die Funktionen next_post_link und previous_post_link erzeugen die Paging-Links oben rechts. Diese Funktionen akzeptieren eine Reihe von Parametern, mit denen wir ihre Ausgabe sehr gut anpassen können. Die Parameter sind:

next_post_link (format, link, in_same_cat, excluded_categories);

Die Format- und Link-Parameter arbeiten zusammen. Format ist, wie der Link angezeigt werden soll:% link im Format wird als Platzhalter für den Inhalt des link-Parameters verwendet. Dies ist der eigentliche Text, den wir für den Link verwenden möchten. Also das:

 previous_post_link ('% link', '<< Next Newest Post' ); next_post_link( '%link', 'Next Oldest Post >> ');

Würde uns das geben:

Wenn wir den tatsächlichen Titel des nächsten oder vorherigen Beitrags anzeigen möchten, verwenden wir den speziellen Wert% title im link-Parameter. Also das:

 previous_post_link ('% link', '<< Previous Post: %title' ); next_post_link( '%link', 'Next Post: %title >> ');

Würde uns das geben:

Mit den übrigen Parametern können Sie sicherstellen, dass sich der nächste verknüpfte Beitrag in derselben Kategorie befindet, und bestimmte Kategorien ausschließen. Lesen Sie die oben verlinkte Dokumentation.

Sie können ein Bild für den Link wie folgt anzeigen:

 $ previous_post_link_image = ''; previous_post_link ('% link', $ previous_post_link_image);

Eine bessere Lösung

So einfach die oben genannten Methoden auch sind, sie sind auch begrenzt. Glücklicherweise gibt uns WordPress die Funktion paginate_links. Auf diese Weise können wir einen echten Satz von Paginierungslinks erstellen, z.

Unten ist der Code, der die obige Paginierung ausgibt. Schauen wir uns an, was es macht.

 global $ wp_query; $ total_pages = $ wp_query-> max_num_pages; if ($ total_pages> 1) $ current_page = max (1, get_query_var ('paged')); echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ page /% #%', 'current' => $ current_page, 'total' => $ total_pages ,)); 
  • globalisieren Sie das wp_query-Objekt, damit wir den Wert für max_num_pages abrufen können: Dies ist die Gesamtzahl der von der Abfrage zurückgegebenen Seiten
  • Finden Sie die aktuelle Seite, indem Sie die Variable 'paged' mit get_query_var abrufen: Wir verwenden die Funktion max, um die aktuelle Seite auf 1 zu setzen
  • Die Funktion paginate_links benötigt ein Array von Parametern: Die vier wichtigsten werden angezeigt
  • Rufen Sie die Basis-URL für die Seite mit der Funktion get_pagenum_link ab und hängen Sie das Muster% _% an, das durch den Formatparameter ersetzt wird
  • In unserem Fall geben Sie ein Formatmuster an, das der Art und Weise entspricht, in der ziemlich Permalinks (mit% postname% in Admin -> Einstellungen -> Permalinks festgelegt) angezeigt werden:% _% im Basisparameter wird hierdurch ersetzt
  • Legen Sie die aktuelle und die gesamte Seite wie zuvor abgerufen fest

Die URL der paggierten Ergebnisse, die ziemlich Permalinks verwenden, sieht etwa so aus:

http://2011.rosselliot.co.nz/category/honda/page/2/

Der Aufruf "get_pagenum_link (1)" ruft diesen Teil der URL ab:

http://2011.rosselliot.co.nz/category/honda/

Dann geben wir einen Formatparameter für den Rest der URL an.

Seite 2

Der% #% -Teil des Formats enthält unsere aktuelle Seitennummer

Basierend auf diesem Parametersatz gibt paginate_links einen Satz von Paging-Links aus. Sie können den Code direkt in eine Vorlagendatei einfügen, die Paging ausführt (z. B. category.php), oder sie als Funktion in Ihrer functions.php speichern und dann von einer beliebigen Vorlage aus aufrufen.

paginate_links verfügt über weitere Parameter, mit denen Sie die Ausgabe anpassen können, wie die Zahlen erscheinen und was die Labels sagen. Konsultieren Sie die Dokumentation. Mit etwas Styling ist es einfach, ein beeindruckendes Paginierungsdisplay zu erstellen. Mit diesem geänderten Code und hinzugefügtem Styling:

 global $ wp_query; $ total_pages = $ wp_query-> max_num_pages; if ($ total_pages> 1) $ current_page = max (1, get_query_var ('paged')); Echo '
'; echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ page /% #%', 'current' => $ current_page, 'total' => $ total_pages , 'prev_text' => 'Prev', 'next_text' => 'Next'))); Echo '
';
 .page_nav .page-numbers padding: 4px 8px; Marge: 0px 4px; Rand: 1px durchgehend grau; Farbe: # FFB134;  .page_nav .current border: 1px fest # FFB134; Hintergrundfarbe: #FBEFDB;  .page_nav .prev, .page_nav .next border: keine; Farbe blau; 

Das war leicht zu produzieren:

Ich hoffe, Sie haben diese Grundierung auf Seitenumbruch genossen. Haben Sie weitere Tipps zur Paginierung mit WordPress? Lass es uns in den Kommentaren wissen.