WP_query Дата Диапазон результатов, не соответствующих циклу

Я написал WP_query с диапазоном дат.

$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 ); 

который отлично работает, когда я вывожу sql и запускаю его в phpmyadmin.

 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 

Однако цикл печатает больше сообщений

 if ( $posts->have_posts() ) : while ( $posts->have_posts() ) : $posts->the_post(); 

Я попытался использовать функции цикла сброса, но не повезло. Что я делаю не так. Это находится в шаблоне страницы, который пытается имитировать архив.

благодаря

Крис

Попробуйте выполнить запрос с помощью

 "suppress_filters" => true 

WP_Query позволяет добавлять сообщения после запуска запроса. found_posts – это фактически запрашиваемая сумма сообщений, post_count обновляется после запуска фильтров.

Если это исправляет поиск вашего кода (любой активный код, проверьте подключенные к сети плагины) для the_posts или posts_results и проверьте, не вызывает ли это его.

Другая причина для этого может быть липкими сообщениями, как мы обнаружили в комментариях, их можно отключить, используя

 "ignore_sticky_posts" => true 

По умолчанию WP_Query добавляет липкие сообщения на первую страницу архивов, где is_home() – true.