Пагинация показывает одинаковый контент на всех страницах

7 февр. 2014 г., 07:32:35
Просмотры: 15.3K
Голосов: 1

Вот мой цикл:

        $my_query = new WP_Query(array(
                'cat' => -399, // Исключаем категорию с ID 399
                'posts_per_page' => 6, // Количество постов на страницу
                'offset' => 5, // Пропускаем первые 5 постов
                'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1 // Получаем номер текущей страницы
        ));
        if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); 
            $imgurl = wp_get_attachment_url( get_post_thumbnail_id($post->ID) ); // URL изображения записи
            $finalurl = get_stylesheet_directory_uri(). "/functions/thumb.php?w=180&h=180&a=t&src=".$imgurl; // Генерация URL миниатюры
            $date = get_the_date(); // Дата публикации
            $id = $post->ID; // ID записи
        ?>
        .... содержимое цикла ....

        <?php $finalurl = "";
        endwhile;
        else: ?>
        <p><?php _e('Извините, нет записей, соответствующих вашим критериям.'); ?></p>
        <?php endif; wp_reset_query();
        $id = ""; wp_pagenavi(); // Вывод пагинации

Пагинация показывает одинаковый контент на всех страницах. Мне нужны ваши предложения по исправлению.

0
Все ответы на вопрос 4
1

Попробуйте изменить $my_query на $wp_query, чтобы проверить, решит ли это проблему. Я обнаружил, что при переименовании запроса возникают проблемы с пагинацией.

Также вам следует переместить сброс запроса после пагинации. Вот цикл, который, как я проверил, работает с пагинацией:

$args = array(
    'posts_per_page' => 10,
    'post_type'      => 'post',
    'paged'          => get_query_var( 'paged' ),
);
$wp_query = new WP_Query( $args );
while ( $wp_query->have_posts() ) : $wp_query->the_post();
    get_template_part( 'templates/content', 'posts' );
endwhile;

/*
  ПАГИНАЦИЯ
*/
if ( function_exists( 'page_navi' ) ) {
    ?>

    <div id="pagination">
        <?php page_navi(); ?>
    </div>
<?php }
wp_reset_query(); ?>
7 февр. 2014 г. 09:14:33
Комментарии

Спасибо, я просто добавил 'paged' => get_query_var( 'paged' ), в свои аргументы, и это сразу же исправило проблему с пагинацией.

Jesse Nickles Jesse Nickles
28 янв. 2024 г. 17:01:03
0

Если вы используете wp_pagenavi на главной странице, да, он не будет работать. Вам нужно изменить текущую страницу в функции wp_pagenavi следующим образом:

// Я изменил код ниже, вы можете увидеть, чем он отличается от вашего.


if(!empty($paged)) {
    $paged = $paged;
}elseif(get_query_var( 'paged')) {
    $paged = get_query_var('paged');
}elseif(get_query_var( 'page')) {
    $paged = get_query_var('page');
}else {
    $paged = 1;
}
7 февр. 2014 г. 10:24:36
0

Вот улучшенная версия ответа от @Devin-Walker. Этот код предназначен специально для archive.php, но может быть адаптирован и для других циклов.

Также он использует навигационные ссылки WordPress вместо page_navi().

Надеюсь, это поможет кому-то.

<?php
/**
 * Страница Архива
 *
 * @Since   1.0
 */

// Выход при прямом доступе
if ( !defined('ABSPATH')) exit;
?>

<?php get_header(); ?>

<div class="container">
    <div class="row">
        <?php 

        // Примечание - Установите количество записей на странице в WP-Admin > Настройки > Чтение > 'На страницах блога отображать не более'
        $args = array(
            'post_type'                 => 'post',
            'paged'                     => get_query_var('paged'),
            'cat'                       => get_query_var('cat'),
        );

        $wp_query = new WP_Query( $args );

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

            <div class="col-md-4 post-card archive my-4">

                <div class="text-center">
                    <a href="<?php the_permalink(); ?>"><img src="<?php echo the_post_thumbnail_url('card-size'); ?>" alt="<?php the_title_attribute(); ?>" title="<?php the_title_attribute(); ?>"></a>
                </div>
                <div class="post-card-details archive-post-details px-4 pb-2">
                    <h3 class="post-card-category px-4 py-2"><?php single_cat_title(); ?></h3>
                    <h3 class="post-card-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                    <p class="post-card-p"><?php echo apply_filters( 'the_content', wp_trim_words( strip_tags( get_post_field('post_content') ), 15 ) ); ?></p>
                </div>

            </div>

        <?php endwhile; ?>

    </div>

    <!-- Навигация -->
    <div class="tablet-pill tablet-pill-purple mb-5"><?php previous_posts_link( 'Предыдущая страница' ); ?> <?php if(get_previous_posts_link() && get_next_posts_link()) echo ' - '; ?> <?php next_posts_link( 'Следующая страница' ); ?></div>

    <?php wp_reset_query(); ?>

</div>

<?php get_footer();
7 окт. 2017 г. 21:00:50
0

Я знаю, что это было давно, но предлагаю еще одно решение для тех, кто столкнулся с похожей ошибкой. В моем случае я использовал offset 0, поэтому я убрал offset из аргументов запроса, что вызывало проблему. Надеюсь, это поможет кому-то еще:

До изменений

$query_args_pagination = array(
          'post_type' => $post_type_pagination,
          // 'posts_per_page' => $countPPP,
          'post_status'    => 'publish',
          'order'          => 'ASC',
          'orderby'        => 'date',
          'posts_per_page' => '12',
          'offset'         => '0',
          'paged' => $paged_pagination,
          // 'page' => $paged_pagination,
          // 'orderby' => 'date',
          'tax_query' => array(
            array(
              'taxonomy' => $taxonomy_pagination,
              'field' => 'slug',
              'terms' => $categoria_pagination,
            )
          )
        );

После изменений

$query_args_pagination = array(
          'post_type' => $post_type_pagination,
          // 'posts_per_page' => $countPPP,
          'post_status'    => 'publish',
          'order'          => 'ASC',
          'orderby'        => 'date',
          'posts_per_page' => '12',
          // 'offset'         => '0',
          'paged' => $paged_pagination,
          // 'page' => $paged_pagination,
          // 'orderby' => 'date',
          'tax_query' => array(
            array(
              'taxonomy' => $taxonomy_pagination,
              'field' => 'slug',
              'terms' => $categoria_pagination,
            )
          )
        );
15 дек. 2023 г. 17:08:05