Задать вопрос

Как сделать пагинацию WordPress?

Здравствуйте, как можно реализовать пагинацию на WP без плагинов?
У меня есть такой код, выводит все записи и навигация появляется, но при переходе на страницу 2 и далее ничего не происходит переходит на "Свежие записи":
<?php
    // параметры по умолчанию
    $wp_query = new WP_Query(array(
        'posts_per_page' => '3', // кол-во записей на страницу
        'post_type' => 'news',
        'paged' => get_query_var('paged') ?: 1
    ));

    while( $wp_query->have_posts($wp_query) ){ $wp_query->the_post(); ?>
            <div class="news_items">
                <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
                <?php the_date(); ?>
                <p ><?php the_content(); ?></p>
            </div>
        <?php
    }
    the_posts_pagination();

    wp_reset_query();
    ?>


Как это можно исправить, пагинация находиться на главной странице и нужно сделать так чтобы при нажатии на 2 и далее переходила на этой же странице!?Постояные ссылки уже сохранял!
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Lord_Dantes
Скину вам пример моего кода навигации без плагинов:
<?php $current = absint(max(1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ))); 
						$posts_per_page = 9; ?>
			<?php $args = array( 'post_type' => 'blog', 'posts_per_page' => $posts_per_page, 'paged' => $current ); $loop = new WP_Query( $args ); ?>
			<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
// код поста блога
<?php endwhile; ?>

<div class="blog-nav">
			<ul class="blog-nav-items">
				<?php
				  echo wp_kses_post(
				  	paginate_links([
				  		'total' => $loop->max_num_pages,
				  		'current' => $current,
				  		'prev_text' => '',
							'next_text' => '',
				  	])
				  );
			 	?>
			</ul>
		</div>
Ответ написан
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
// получаем номер страницы пагинации
$current = absint( max( 1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ) ) );

// собираем запрос
$my_query = new WP_Query( [
	'post_type'      => 'page',
	'posts_per_page' => 10,
	'paged'          => $current,
] );

if ( $my_query->have_posts() ) {

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

		###########
	}

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

Войдите, чтобы написать ответ

Похожие вопросы