Отображение страниц с одинаковыми сообщениями со страницы 1 на всех других страницах

Недавно мне очень помогли создать список предстоящих событий (см. Здесь Отображение предстоящих событий (включая сегодняшнее событие)? ), В результате моя разбивка на страницы с использованием WP Pagenavi нарушена.

На данный момент, когда вы нажимаете на странице 2, он просто показывает те же сообщения, что и первая страница. Хотя URL-адрес действительно меняется на страницу / 2 страницы / 3 и т. Д.

У меня это в файле functions.php:

function filter_where( $where = '' ) { $where .= " AND post_date >= '" . date("Ymd") . "'"; return $where; } add_filter( 'posts_where', 'filter_where' ); $query = new WP_Query( array( 'post__not_in' => array(4269), 'paged' => get_query_var('paged'), 'post_type' => 'whatson', 'exclude' => '4269', 'post_status' => 'future,publish', 'posts_per_page' => 20, 'order' => 'ASC' ) ); remove_filter( 'posts_where', 'filter_where' ); 

Мой цикл следующий:

 <?php while ( $query->have_posts() ) : $query->the_post(); ?> // content <?php endwhile; // end of the loop. ?> <?php if (function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $query ) ); } ?> 

Наконец, решил:

 function my_filter_where( $where = '' ) { global $wp_query; if (is_array($wp_query->query_vars['post_status'])) { if (in_array('future',$wp_query->query_vars['post_status'])) { // posts today into the future $where .= " AND post_date > '" . date('Ym-d', strtotime('now')) . "'"; } } return $where; } add_filter( 'posts_where', 'my_filter_where' ); 

А также:

 <?php $wp_query = array( 'post__not_in' => array(4269), 'paged' => get_query_var('paged'), 'post_type' => 'whatson', 'exclude' => '4269', 'posts_per_page' => 20, 'order' => 'ASC', 'orderby' => 'date', 'post_status' =>array('future','published')); query_posts($wp_query); ?> <?php if ($wp_query->have_posts()) { while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?> Content <?php endwhile; // end of the loop. } ?> <?php if (function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $wp_query ) ); } ?> 

Вы хотите его для определенной должности или для всех из них? Если вам нужна общая разбивка на страницы, вы можете сделать ссылки на страницы без плагинов с помощью этого фрагмента кода:

 <?php global $wp_query; $big = 999999999; // need an unlikely integer echo paginate_links( array( 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages ) ); ?> 

Просто добавьте его в index.php или archives.php и посмотрите, как происходит волшебство 🙂

Я не уверен, что происходит с остальной частью вашего кода, но одна попытка попробовать это будет простой тест: использовать wp_reset_query() перед new WP_Query чтобы убедиться, что переменные запроса не были изменены.