Появилась необходимость вывести записи на отдельной странице с выводом пагинации внизу.
Для того, чтобы решить данную проблему необходимо создать шаблон страницы WordPress. Как создать шаблон в WordPress расскажу в следующей статье. После того, как вы создали шаблон с нужным вам оформлением, в блоке где у вас выводится основной контент, необходимо вставить следующий код:
<?php
$count_items = 10;
$paged = get_query_var( 'paged', 1 );
$id = get_category_by_slug( 'post' )->cat_ID;
$recent = new WP_Query( "cat=$id&posts_per_page=$count_items&paged=$paged" );
?>
<?php if ( $recent->have_posts() ) { while ( $recent->have_posts() ) { $recent->the_post(); ?>
<div class="article-list-block">
<div class="article-image"> <?php the_post_thumbnail('img_post_size'); ?> </div>
<div class="article-block-info">
<div class="article-date"><?php the_time('j F Y'); ?></div>
<h3 class="article-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<p class="article-body"> <?php the_excerpt(); ?> </p>
<a href="<?php the_permalink(); ?>">Подробнее</a>
</div>
</div>
<?php } ?>
<?php wp_pagenavi( array( 'query' => $recent ) ); ?>
<?php } else { ?>
<p>Записей нет.</p>
<?php } ?>
Разберем данный код по порядку. В данном части создаем запрос с необходимыми параметрами.
<?php
$count_items = 10;//кол-во выводимых элементов на странице
$paged = get_query_var( 'paged', 1 );//Получаем текущую страницу
$id = get_category_by_slug( 'post' )->cat_ID;//получаем id рубрики. У меня рубрика всех записей.
$recent = new WP_Query( "cat=$id&posts_per_page=$count_items&paged=$paged" );//выполняем запрос по параметрам указанных выше
?>
Далее идет вывод записей в цикле и обертка всеми необходимыми тэгами:
<?php if ( $recent->have_posts() ) { while ( $recent->have_posts() ) { $recent->the_post(); ?> // цикл с выводом нужных записей
<div class="article-list-block">
<div class="article-image"> <?php the_post_thumbnail('img_post_size'); ?> </div>// миниатюра записи
<div class="article-block-info">
<div class="article-date"><?php the_time('j F Y'); ?></div> // дата публикации
<h3 class="article-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> //Заголовок записи
<p class="article-body"> <?php the_excerpt(); ?> </p> // краткое содержимое
<a href="<?php the_permalink(); ?>">Подробнее</a> //ссылка на саму запись
</div>
</div>
<?php } ?>
Ну и сама пагинация, она добавляется при помощи распространенного плагина WP-PageNavi, который можно найти в каталоге WordPress. Выглядит он следующим образом:
И чтобы он заработал вставляем вот такой код:
<?php wp_pagenavi( array( 'query' => $recent ) ); ?>
Куда его вставить можно увидеть в начале статьи, где показан код целиком.
На этом все, если возникнут какие либо вопросы задавайте их в комментариях.
Спасибо за статью, код рабочий, установил на боевой проект и все заработало!