Korrigieren Sie die Paginierung für benutzerdefinierte Abfragen, ohne die Einstellungen für standortweite Posts pro Seite zu ändern

Viele Menschen berichten über Probleme bei der Paginierung von benutzerdefinierten Abfragen oder benutzerdefinierten Post-Typ-Archiven: url / page / 2 erzeugt einen 404, obwohl alle Einstellungen korrekt sind.

Viele stellen fest, dass dies der Fall ist, weil die posts_per_page ihrer benutzerdefinierten Schleife kleiner ist als die maximale Einstellung für Posts pro Seite im Admin, die sie durch Ändern korrigieren

Settings » Reading » "Blog pages show at most: ____ posts" 

bis 1.

Dies funktioniert in meiner Situation, aber ich würde es vorziehen, dies nur für diese spezifische benutzerdefinierte Abfrage und nicht für die gesamte Site zu ändern. Ist das möglich?

Das relevante WP_Query ist das:

 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $wp_query = new WP_Query( array( 'post_type' => 'publication', 'posts_per_page' => 5, 'paged'=>$paged)); 

Solutions Collecting From Web of "Korrigieren Sie die Paginierung für benutzerdefinierte Abfragen, ohne die Einstellungen für standortweite Posts pro Seite zu ändern"

Ich nehme an, Sie haben einen benutzerdefinierten Beitragstyp: Veröffentlichung

Platziere in functions.php diesen Code:

 function mk_parse_query($query) { if ($query->query_vars['post_type'] == 'publication')) { set_query_var( 'posts_per_page', 5 ); } } if( !is_admin() ) { add_filter('parse_query','mk_parse_query'); } 

Ein ähnlicher Code funktioniert für mich, aber in meinem Fall hatte ich Probleme mit 404-URLs für benutzerdefinierte Taxonomien.

Hoffe das hilft.

Wenn Sie es global in die Veröffentlichung vom pre_get_posts ändern möchten, verwenden Sie den pre_get_posts Hook und fügen Sie functions.php Folgendes hinzu

 add_action( 'pre_get_posts', function ( $query ) { if ( 'publication' === $query->query_vars['post_type'] && ! is_admin() ) { $query->set( 'posts_per_page', 5 ); } } ); 

Wenn Sie es nur für eine benutzerdefinierte Abfrage benötigen, hilft Ihnen die folgende Antwort: https://stackoverflow.com/a/20905538/2043492