Посты объявлений индексации страниц в статическом пользовательском запросе страницы

В WordPress у меня есть страница для новостей, в которой используется определенный шаблон страницы, который я создал. Эта страница заполняется сообщениями новостей, присвоенными категории новостей. Мне нужно показать только две последние новостные сообщения на этой странице с ссылками Previous / Next внизу, если пользователи хотят читать больше новостей. Однако следующие / предыдущие ссылки не работают. Нажатие на них идет в / page / 2, но на нем отображаются те же сообщения. Вот мой код .. любые идеи / помощь оцениваются!

<div id="primary"> <div id="content" role="main"> <div id="news"> <?php query_posts( "category_name=news&orderby=date&order=ASC&posts_per_page=2" ); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> <p class="post-date">Posted on <?php the_date(); ?> <?php the_excerpt(); ?> <?php endwhile; ?> <?php endif; ?> <div id="more-posts"> <div class="previous-link"><?php previous_posts_link("< previous news") ?></div><div class="next-link"><?php next_posts_link ("more news >") ?></div> </div> </div> </div><!-- #content --> </div><!-- #primary --> 

Когда вы выполняете пользовательский запрос, такой как этот, вам нужно немного «взломать», чтобы правильная разбивка на страницы.

Измените это:

 <?php query_posts( "category_name=news&orderby=date&order=ASC&posts_per_page=2" ); ?> 

… для вызова WP_Query :

 <?php $news_query = new WP_Query( "category_name=news&orderby=date&order=ASC&posts_per_page=2" ); ?> 

И тогда вам нужно * переместить свой пользовательский объект запроса в $wp_query global`:

 // Move $wp_query into a temp holder $temp = $wp_query; // Nullify the global object $wp_query = null; // Now move your custom query into the $wp_query = $news_query; 

Затем обновите инициализацию цикла, из этого:

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 

…к этому:

 <?php if ( $news_query->have_posts() ) : while ( $news_query->have_posts() ) : $news_query->the_post(); ?> 

Это должно привести к тому, что разбиение на страницы будет работать должным образом.

Когда вы закроете цикл:

 <?php endwhile; ?> <?php endif; ?> 

… просто восстановить исходный $wp_query global:

 <?php endwhile; ?> <?php endif; ?> <?php $wp_query = $temp; ?> 

И тебе должно быть хорошо.