Не работает в пагинации get_query_var(‘paged’)

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Описание проблемы

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *