Как сделать пагинацию для элементов custom post type на странице page

25.09.2015

Вывод всех записей custom post type review без пагинации:

<?php 
$args = array( 'post_type' => 'review', 'posts_per_page' => '999' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>

<?php the_content(); ?>

<?php 
endwhile; 
wp_reset_query(); ?>

Вывод записей custom post type review с пагинацией на страницах архивов (index.php):

<?php 
global $query_string;
query_posts($query_string.'&post_type=review&posts_per_page=10');
if(have_posts()) : while(have_posts()) : the_post(); ?>

<?php the_content(); ?>

<?php 
endwhile;
wp_pagenavi();
endif;
wp_reset_query(); ?>

Обычная пагинация срабатывает при размещении на страницах архивов или на Главной странице, но как вывести пагинацию на страницах page.

Вариант 1:

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'paged' => $paged ,'post_type' => 'review', 'posts_per_page' => '10' );

$wp_query = new WP_Query( $args );
while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>

<?php the_content(); ?>

<?php 
endwhile; 
wp_pagenavi();
wp_reset_postdata(); ?>

Вариант 2 (Более предпочтителен, если на страницах есть вывод других циклов):

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'paged' => $paged ,'post_type' => 'review', 'posts_per_page' => '10' );

$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>

<?php the_content(); ?>

<?php 
endwhile; 
wp_pagenavi( array( 'query' => $loop ) );
wp_reset_postdata(); ?>

Варианты кода с пагинацией предоставил Algiz.

Полезная инфа:

Комментарии (5) к “Как сделать пагинацию для элементов custom post type на странице page”

  • Ольга

    Огромное человеческое спасибо!!! 3 дня билась над этой проблемой вывода пагинации. Спасибо, спасибо, спасибо!!!

    Ответить
  • Александр

    Доброго времени суток! Мне кажется у вас ошибка в начале «Вывод всех записей custom post type review без пагинации:» 'posts_per_page' => '999' для выбора всех записей используется значение «-1».

    Ответить
    • Denis Creative

      Я уже не помню, но, вроде, возникали какие-то проблемы со значением «-1», нужно пробовать.

      Ответить
  • ramaz

    не пашет более, при вызове функции wp_pagenavi обрывает поток выдачи

    Ответить

Оставить комментарий