Warum muss ich pre_get_posts mit benutzerdefinierter WP_Query verwenden, um posts_per_page zurückzusetzen?

Das macht keinen Sinn. Ich benutze eine benutzerdefinierte Abfrage in der archive.php, um ein Mauerwerk zu erstellen.

$term_id = get_queried_object_id(); $paged = 1; if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } $tax_query = array(); if ( $term_id != '0' ) { $tax_query = array( array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $term_id ) ); } $args = array( 'posts_per_page' => 1, 'post_type' => 'post', 'orderby' => 'date', 'order' => 'desc', 'paged' => $paged, 'tax_query' => $tax_query, 'order' => 'DESC', 'orderby' => 'date' ); $query = new WP_Query( $args ); 

Dann mache ich die Schleife und danach die Seitennummerierung

 have_posts() ) : $query->the_post(); ?>   max_num_pages,1,$paged ); ?>  

Paginierungsfunktion ist diese http://callmenick.com/post/custom-wordpress-loop-with-pagination

Alles gut angezeigt, Anzahl der Seiten, Blog-Elemente, alles,

Bildbeschreibung hier eingeben

Wie Sie aus dem obigen Bild sehen können, habe ich mehrere Paginierungen getestet, um sicherzustellen, dass ich das richtig mache. Alles ist in Ordnung, bis Sie auf einen Paginierungslink klicken. Blog-Seiten zeigen höchstens Einstellung übernimmt und ich bekomme 404 Seite.

Ich habe alle Vorschläge auf Stapel versucht, um posts_per_page zurückzusetzen, aber nichts funktionierte, bis ich dies tat

 function _action_set_posts_per_page( $query ) { $query->set( 'posts_per_page',1); } add_action( 'pre_get_posts', '_action_set_posts_per_page' ); 

das macht überhaupt keinen Sinn, und mit dieser Aktion muss ich mehrere Überprüfungen durchführen, um sicherzustellen, dass ich nicht jemand anderen Seitenumbruch durcheinander bringe. Warum muss ich dies tun, wenn meine benutzerdefinierte Abfrage bereits posts_per_page definiert hat posts_per_page

Jemand bitte erleuchte mich.

Solutions Collecting From Web of "Warum muss ich pre_get_posts mit benutzerdefinierter WP_Query verwenden, um posts_per_page zurückzusetzen?"

Die Anzahl der Seiten in einem Archiv basiert auf den Ergebnissen der Hauptabfrage . Sie können eine benutzerdefinierte Abfrage nicht über die Anzahl der Seiten hinweg paginieren, die die Hauptabfrage enthält, da bestimmt wird, dass es sich um ein 404 handelt, bevor die Vorlage, die Ihre benutzerdefinierte Abfrage ausführt, jemals geladen wird. Das Ändern von posts_per_page und das Ausführen Ihrer benutzerdefinierten Abfrage funktioniert, weil Sie die Anzahl der Seiten in beiden Abfragen übereinstimmen lassen.

Wenn Sie mit Ihrer benutzerdefinierten Abfrage nur anders tun möchten, als posts_per_page , sollten Sie die benutzerdefinierte Abfrage vollständig entfernen und nur pre_get_posts mit einer Art is_ , um sicherzustellen, dass Sie nur die is_ ändern, die Sie ändern möchten.