backflipper
@backflipper
Front-end dev

Как добавить пагинацию для кастомного запроса в WP?

Есть запрос который выводит посты определенной категории, каким образом туда можно добавить пагинацию?
<?php $posts = get_posts ("category=7&orderby=date&order=ASC&posts_per_page=2"); ?> 
                <?php if ($posts) : 
                $i = 0;?>
                <?php foreach ($posts as $post) : setup_postdata ($post); ?>
                    <?php $thumb_id = get_the_ID();
                    $image = wp_get_attachment_url( get_post_thumbnail_id($post->ID)); ?>
                   <div class="item">
                        <div class="col-md-4 col-sm-4 col-xs-12">
                            <div class="name_title" style="background:<?php the_field('color'); ?>;"><?php $title = get_the_title(); echo mb_substr($title, 0, 1, 'utf-8') ?></div>
                            <span class="name"><?php echo get_the_title(); ?></span>
                            <span class="type"><?php the_field('type'); ?></span>
                            <span class="auto">Автомобиль: <?php the_field('auto'); ?></span>
                            <span class="crash">Событие: <?php the_field('crash'); ?></span>
                            <span class="sum">Взыскано: <?php the_field('sum'); ?></span>
                            <div class="image"><img src="<?php echo $image;?>" alt=""></div>
                        </div>
                        <div class="col-md-8 col-sm-8 col-xs-12">
                            <div class="title">Хронология событий:</div>
                            <?php the_content(); ?>
                            <a href="<?php the_permalink(); ?>" class="more">Показать полностью</a>
                        </div>
                    </div>
                <?php $i++; endforeach; ?>
 <div class="nav-next"><?php next_post_link( '%link', 'Загрузить еще', TRUE ); ?></div>
                <?php endif; ?>
  • Вопрос задан
  • 791 просмотр
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Если нужна пагинация, то не используйте get_posts(). Вместо этого используйте WP_Query().

<?php
// На какой мы странице?
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

// Параметры запроса и запрос
$args = array( 
    'posts_per_page' => 5, 
    'category_name' => 'Some Category', // тут имя категории
    'paged' => $paged,
    'post_type' => 'post' 
);
$posts = new WP_Query( $args );

// Луп
if ( $posts->have_posts() ) :

    while ( $posts->have_posts() ) : $posts->the_post(); ?>

    <article>
        <h3><?php the_title(); ?></h3>
        <div><?php the_content(); ?></div>
    </article>

    <?php
    endwhile;  

    // Ссылки вперед-назад
    next_posts_link( 'Предыдущая страница', $posts->max_num_pages );
    previous_posts_link( 'Следующая страница' ); 

    wp_reset_postdata();

endif; ?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы