Die Seitennummerierung mit WP_Query ist errorshaft – funktioniert für einige Seiten, aber nicht für die anderen Seiten

Ich habe einen sehr seltsamen Bug mit Paginierung 🙁 Ich versuche, 4 Beiträge pro Seite für eine Kategorie mit Slug “lastest-news” anzuzeigen.

Die Paginierungsfunktion scheint korrekt zu funktionieren. Es gibt 33 Beiträge. Die Paginierung wird korrekt mit 9 Seiten und Links des folgenden Formats aufgebaut: / category / lastest-news / page //

Das Interessante daran ist, dass es richtig funktioniert (Anzeige von 4 Posts pro Seite) von Seite 1-4 inklusive. Für die Seiten 5-9 funktioniert es jedoch überhaupt nicht. Es scheint nicht einmal der Vorlage zu dienen … der einzige Fehler, den ich erkennen konnte, ist der auf der Seite “Nichts gefunden für die Kategorie Letzte Neuigkeiten”.

Ich würde verstehen, wenn es überhaupt nicht funktioniert, aber für zufällig 4 Seiten und nicht mehr?

Ich würde wirklich jede Hilfe sehr schätzen! Ich habe über 4 Stunden damit verbracht herauszufinden, was los ist und es nervt mich.

Danke für die Hilfe 🙂

Ich verwende den folgenden Code für die Abfrage:

max_num_pages); ?> 

Ich benutze Paginierung function von diesem Beitrag: http://www.kriesi.at/archives/how-to-build-a-wordpress-post-pagination-without-plugin

Hier ist die function (die gut zu funktionieren scheint):

 function pagination($pages = '', $range = 2){ $showitems = ($range * 2)+1; global $paged; if(empty($paged)) $paged = 1; if($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; } } if(1 != $pages) { echo "\n"; } } 

Solutions Collecting From Web of "Die Seitennummerierung mit WP_Query ist errorshaft – funktioniert für einige Seiten, aber nicht für die anderen Seiten"

WordPress führt auf jeder Seite eine eigene Abfrage durch. Sie sollten diese Abfrage ändern, anstatt eine neue Abfrage zu erstellen. Was jetzt passiert ist, dass WordPress eine Abfrage mit den Standard-Posts pro Seite von 10 durchführt, aber Sie nichts mit diesen Ergebnissen tun und Ihre eigene Abfrage durchführen. Das funktioniert … bis WordPress über Post # 33 hinausgeht, was auf Seite 4 steht.

  1. WordPress-Abfragen 1-10, Ihre Vorlage fragt 1-4 ab
  2. WordPress-Abfragen 11-20, Ihre Vorlage fragt 5-8 ab
  3. WordPress-Abfragen 21-30, Ihre Vorlage fragt 9-12
  4. WordPress-Abfragen 31-40, Ihre Vorlage fragt 13-16 ab
  5. WordPress fragt 41-50 ab, erhält aber keine Ergebnisse, also gibt es 404. Ihre Vorlage wird nicht geladen.

Stattdessen sollten Sie die Standard-Abfrage ändern, die WordPress ausführt, indem Sie diese in Ihre functions.php oder in ein Plugin einfügen:

 add_action( 'pre_get_posts', 'wpse7687_pre_get_posts' ); function wpse7687_pre_get_posts( &$wp_query ) { if ( $wp_query->is_category && 'latest-news' == $wp_query->get_queried_object()->slug ) { $wp_query->set( 'posts_per_page', 4 ); } } 

Basierend auf @ Jan Fabry Antwort habe ich die Syntax ein wenig geändert. Es läuft gut. Danke Jan für die Erklärung !!!

 add_action( 'pre_get_posts', 'wpse7687_pre_get_posts' ); function wpse7687_pre_get_posts( &$wp_query ) { if ($wp_query->query_vars['category_name'] == 'latest-news'){ $wp_query->query_vars['posts_per_page'] = 4; } }