Описание проблемы
Имеется статическая страница в которой выводятся записи из созданного произвольного типа поста «Услуги». Пагинация выводится, а когда осуществляется переход на страницы пагинации (/page/2/) то данные новых постов не выводятся, хотя урл изменился.
изначальный код
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('showposts=10&post_type=uslugi&paged='.$paged);
while(have_posts()) : the_post();
// тело цикла
endwhile;
the_posts_pagination();
wp_reset_query();
Решение проблемы
Измененный код
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
query_posts('showposts=10&post_type=uslugi&paged='.$paged);
while(have_posts()) : the_post();
// тело цикла
endwhile;
the_posts_pagination();
wp_reset_query();
и все заработало нормально.
Вариант с WP_Query
global $wp_query;
$wp_query = new WP_Query( array(
'post_type' => 'uslugi',
'posts_per_page' => 10,
'orderby'=> 'menu_order',
'paged'=>$paged
));
while(have_posts()){
the_post();
// тело цикла
}
the_posts_pagination(); // пагинация
wp_reset_query(); // очищаем запрос
Подводные камни
Пагинация может не работать на этих примерах, если урл страницы совпадает с типом поста с которого выводятся записи.
Например
есть произвольный тип данных post_type = article, и есть страница с урлом article, на которой выводятся записи поста — тогда пагинация не срабатывает
Чтоб заработало, надо изменить урл страницы на articles, и тогда получается следующее
на странице articles выводятся записи с post_type = article

