Описание проблемы
Имеется статическая страница в которой выводятся записи из созданного произвольного типа поста «Услуги». Пагинация выводится, а когда осуществляется переход на страницы пагинации (/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