Benutzerdefinierte Abfrage enthalten private Beiträge in Paginierung Anzahl Berechnungen?

Ich habe Probleme mit der Paginierung mit einer benutzerdefinierten Abfrage, um sowohl private als auch veröffentlichte Posts aus einer Kategorie anzuzeigen.

Hier ist meine benutzerdefinierte Abfrage:

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $query_args = array( 'post_type' => 'post', 'post_status' => array('private', 'publish'), 'cat' => '1208', 'posts_per_page' => 20, 'paged' => $paged, ); $the_query = new WP_Query( $query_args ); if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); endwhile; endif; wp_pagenavi( array( 'query' => $the_query ) ); 

Dieser Code oben funktioniert ordnungsgemäß für angemeldete Benutzer, aber ich benutze diesen Code, um private Beiträge als “Teaser” für Gäste anzuzeigen und die privaten Beiträge werden angezeigt, aber sie werden nicht in die Paginierungsberechnungen gezählt, so dass wir am Ende weniger haben Seiten, da es nur die veröffentlichten Beiträge zählt.

Irgendeine Idee, wie ich wordpress private Beiträge sowie veröffentlichte Beiträge in die Paginierung für diese benutzerdefinierte Abfrage machen kann?

Ich stecke fest! Irgendwelche Ideen willkommen! Vielen Dank!

BEARBEITEN: Nach weiterer Untersuchung funktioniert dieser Code richtig, wenn er als “Seite” läuft, aber wenn ich ihn als “Kategorie” benutze, benutze Template category-name.php wordpress zählt nur die Beiträge, die in der Kategorie “veröffentlicht” sind und nicht enthalten die privaten. Ich bin sicher, das ist ein coreproblem, und ich muss etwas in functions.php tun, um die Abfrage für diese Kategorie zu ändern.

Solutions Collecting From Web of "Benutzerdefinierte Abfrage enthalten private Beiträge in Paginierung Anzahl Berechnungen?"

Wenn Sie diese benutzerdefinierte Abfrage anstelle der normalen Hauptabfrage ausführen, sollten Sie stattdessen die Hauptabfrage vor dem pre_get_posts Beiträgen über die Aktion pre_get_posts . Dies würde in der functions.php deines Themes oder einem benutzerdefinierten Plugin gehen:

 function wpd_private_posts_in_categories( $query ) { if ( $query->is_category() && $query->is_main_query() ) { $query->set( 'post_status', array('private', 'publish') ); $query->set( 'posts_per_page', 20 ); } } add_action( 'pre_get_posts', 'wpd_private_posts_in_categories' ); 

Sie können dann die normale Schleife in Ihrer Kategorievorlage ausführen und die Seitenumbruch funktioniert ordnungsgemäß, private Beiträge werden in die Berechnungen einbezogen.