Ich habe eine WP_query mit einem Datumsbereich geschrieben.
$args = array( 'date_query' => array( array( 'column' => 'post_date_gmt', 'after' => array('year' => $after[0], 'month' => $after[1], 'day' => $after[2]) ), array ( 'column' => 'post_date_gmt', 'before' => array('year' => $before[0], 'month' => $before[1], 'day' => $before[2]) ) ), 'posts_per_page' => -1, 'inclusive' => false, ); $posts = new WP_Query( $args );
das funktioniert perfekt, wenn ich das SQL ausstelle und es in phpmyadmin laufen lasse.
SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND ( wp_posts.post_date_gmt > '2015-01-11 23:59:59' AND wp_posts.post_date_gmt < '2015-01-17 00:00:00' ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC
Die Schleife druckt jedoch mehr Posts aus
if ( $posts->have_posts() ) : while ( $posts->have_posts() ) : $posts->the_post();
Ich habe versucht, die Reset-Loop-functionen zu verwenden, aber ohne Glück. Was mache ich falsch. Dies ist in einer Seitenvorlage, die versucht, das Archiv nachzuahmen.
Vielen Dank
Chris
Versuchen Sie, Ihre Abfrage mit auszuführen
"suppress_filters" => true
WP_Query
ermöglicht das WP_Query
von Posts, nachdem die Abfrage ausgeführt wurde. found_posts ist die tatsächlich abgefragte Menge an Posts, post_count wird nach dem Ausführen der Filter aktualisiert.
Wenn das the_posts
posts_results
ist, suchen Sie Ihren Code (Any active code, überprüfen Sie auch die netzwerkaktivierten Plugins) für den Filter ” the_posts
oder ” posts_results
und prüfen Sie, ob the_posts
posts_results
verursacht.
Ein weiterer Grund dafür könnte sein, dass wir in den Kommentaren klebrige Posts finden, die mit deaktiviert werden können
"ignore_sticky_posts" => true
Standardmäßig fügt WP_Query der ersten Seite von Archiven, in denen is_home()
true hat, klebrige Posts hinzu.