jivo banner 468x60jivo banner 728x90jivo banner 930x180skillbox banner 468x60skillbox banner 728x90skillbox banner 930x180flexbe banner 468x60flexbe banner 728x90flexbe banner 930x180

Вордпресс устроен таким образом, что для любого запроса постов из базы с помощью WP_Query() вы можете сделать пагинацию, поскольку для этого в запросе уже есть необходимые аргументы 'paged' и 'posts_per_page'.

Под пагинацией мы понимаем страничную навигацию. Например, если мы указываем вывод 10 постов на странице, а в ответе WP_Query() нам возвращается информация о 32 записях, то пагинация покажет нам ссылки на 2, 3 и 4 страницу.

И последнее — если вы находитесь в любом архивном шаблоне, например, archive.php, category.php, index.php и др., то там уже существует основной цикл и делать повторно запрос не нужно, в этой же статье мы разбираем пагинацию для произвольного запроса на примере страниц типа page.

Разберем код на примере:

// получаем номер страницы пагинации
$current = absint( max( 1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ) ) );

// собираем запрос
$args = array(
'post_type'      => 'page',
'posts_per_page' => 10,
'paged'          => $current,
);

$my_query = new WP_Query( $args );

if ( $my_query->have_posts() ) {

echo '<ul class="posts-list">';

// основной цикл
while ( $my_query->have_posts() ) {
$my_query->the_post();

echo '<li class="posts-list__item">';
echo '<a href="' . esc_url(get_the_permalink()) . '">' . get_the_title() . '</a>';
echo '</li>';
}

echo '</ul>';

wp_reset_postdata(); // возвращаем глобальный цикл
 
 // выводим пагинацию
echo wp_kses_post(
paginate_links(
[
'total'   => $my_query->max_num_pages, // количество берем из дефолтной опции запроса
'current' => $current, // текущая страница
]
)
);
} else {
// выводим шаблон "нет контента", если в запросе нет постов
get_template_part( 'templates/content', 'none' );
}

Сначала собираем переменные для запроса. Здесь у нас два обязательных аргумента: 'posts_per_page' (кол-во постов на странице) и 'paged' (страница пагинации Х), остальные указываются в зависимости от запроса.

Далее мы делаем запрос WP_Query(), собираем полученные данные в переменную и выводим, делаем резет кастомного цикла и выводим пагинацию.

В случае, когда данных нет выводим шаблон templates/content-none.php.

Чтобы узнать, какие данные вам пришли в переменную $my_query важно уметь печатать переменные.

Проблема с редиректом в пагинации

Если пагинация выводится верно, но при клике на ссылку в пагинации вы получаете редирект на первую страницу нужно отключить перенаправление в записях.

В WordPress редирект всегда включен по умолчанию, но в случае с кастомной пагинацией его нужно отключить.

// отключаем редирект для страниц, потому что при /page/2 редиректит на /
add_filter('redirect_canonical', 'disable_page_redirect');
function disable_page_redirect( $redirect_url ) {

if( is_page() ) {
$redirect_url = false;
return $redirect_url;
} 

}

Проблема с 404 в пагинации

Если все выводится правильно, но вы ловите 404 ошибку при клике на пост, вам нужно сбросить кеш ссылок. Зайдите в раздел Настройки -> Постоянные ссылки и нажмите «Сохранить»

smsc banner 480x320smsc banner 728x90smsc banner 120x600skillbox banner 480x320skillbox banner 728x90skillbox banner 120x600beget banner 480x320beget banner 728x90beget banner 120x600

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

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

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

Похожие посты

Как сделать webp без плагинов в WordPress

WebP — это современный формат сжатия изображений без потери качества, который напрямую влияет на скорость загрузки сайта. Конвертирование изображений из jpg и png в формат webp может дать существенный прирост в баллах по google page speed. Формат webp поддерживается большинством современных браузеров. Вы без труда можете найти плагины, которые помогут вам автоматически конвертировать изображения, добавленные…

Как вывести все изображения из произвольной папки без плагинов в WordPress

При разработке своих сайтов вам может понадобиться вывести галереи изображений из произвольных папок без их загрузки в библиотеку. Давайте рассмотрим пример, как это сделать с помощью шорткода: Использование: [folder-gallery path=’/data/images/’] Как видите, функция принимает путь до искомой папки (обязательно с открывающим и закрывающим слешем), в функции устанавливаются разрешенные типы изображений и формируется вывод с классами…

Как изменить выравнивание и размер изображения при вставке в редактор WordPress

При добавлении изображения в пост, по умолчанию WordPress вставляет его в размере medium и без выравнивания. Чтобы при загрузке картинки ей прописывалось выравнивание по центру и полный размер, вы можете использовать такой код: