Пагинация WordPress не возвращает записи на второй странице

Вопрос или проблема

У меня есть страница, на которой я хочу отображать только один пост на странице с пагинацией внизу для перехода к следующему/предыдущему посту. Это мой код:

  <?php $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1';
$args = array (
    'nopaging'               => false,
    'paged'                  => $paged,
    'posts_per_page'         => '1',
    'post_type'              => 'post',
    'category_name'          => 'enforcement',
);
?>
    <?php 
     $wp_query = new WP_Query($args);
    ?>

    <?php if ( $wp_query->have_posts() ) : ?>
    <?php while ( $wp_query->have_posts() ) : the_post(); ?>   
<!--<div class="case-studies-text-banner">
   <img src="http://www.mariadev.co.uk/wp-content/uploads/2017/05/case-study-layer.png"/>
    <div class="case-study-title"><?php the_title(); ?></div>
    <div class="case-study-pdf"><?php if (function_exists("wpptopdfenh_display_icon")) echo wpptopdfenh_display_icon();?></div>
    </div>-->

    <?php the_content(); ?>

    <?php endwhile; ?>

<?php next_posts_link( 'Старые записи »', $query->max_num_pages ); ?>


     <?php wp_reset_postdata(); ?>
    <?php else : ?>
    <p><?php __('Нет новостей'); ?></p>
    <?php endif; ?>

Это действительно отображает только 1 пост на первой странице, но при нажатии на старые посты и переходе по этому URL www.testing./?cat=8&paged=2 никакие посты не отображаются, хотя в этой категории есть 3 поста. Есть идеи, что я делаю не так?

Попробуйте это в качестве вашего инициализации $paged

<?php global $paged; ?>
<?php 
  if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
  elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
  else { $paged = 1; }  
?>

Пожалуйста, добавьте эту строку и проверьте.

<?php previous_posts_link( 'Новые записи' ); ?>

Для получения дополнительной информации, пожалуйста, ознакомьтесь с этой ССЫЛКОЙ

Ответ или решение

Проблема с пагинацией в WordPress: отсутствие постов на второй странице

Ваша проблема с пагинацией в WordPress, когда второй странице не отображаются посты, может быть вызвана несколькими факторами. Ниже приведены детальные рекомендации по решению этой проблемы.

1. Правильная Инициализация Переменной $paged

Ваш исходный код использует следующую конструкцию для инициализации переменной $paged:

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1';

Данная строка кода может не работать в случаях, когда пагинация становится нестандартной или если используется структура постоянных ссылок, отличная от обычной. Чтобы более надёжно инициализировать переменную $paged, используйте следующий код:

global $paged; 
if ( get_query_var('paged') ) {
    $paged = get_query_var('paged');
} elseif ( get_query_var('page') ) {
    $paged = get_query_var('page');
} else {
    $paged = 1;  
}

Эта конструкция обеспечивает правильное считывание переменной как для постов, так и для страниц.

2. Проверьте Аргументы Запроса

На основе вашего кода выше, вы передали параметры в запрос следующим образом:

$args = array (
    'nopaging'       => false,
    'paged'          => $paged,
    'posts_per_page' => '1',
    'post_type'      => 'post',
    'category_name'  => 'enforcement',
);

Убедитесь, что в вашей категории действительно есть посты. Также возможно, вам стоит использовать 'orderby' => 'date', 'order' => 'DESC' в аргументах запроса, чтобы убедиться, что вы получаете самые свежие посты.

3. Отображение Ссылок на Посты

В вашем коде использование функции для вывода кнопки «Старые записи» выглядит следующим образом:

next_posts_link( 'Older Entries »', $query->max_num_pages );

Однако возможно, вы забыли настроить переменную $query. Скорее всего, правильным будет использовать $wp_query:

next_posts_link( 'Older Entries »', $wp_query->max_num_pages );

Также добавьте функцию previous_posts_link для навигации на предыдущие страницы:

previous_posts_link( 'Newer posts' );

4. Сброс Данных Поста

После завершения вывода постов не забудьте выполнить сброс данных с помощью:

wp_reset_postdata();

Это гарантирует, что все глобальные переменные и данные будут сброшены, что поможет избежать потенциальных конфликтов.

5. Проверка Постоянных Ссылок

Проверьте настройки постоянных ссылок в админ-панели WordPress (Настройки > Постоянные ссылки). Убедитесь, что они настроены корректно, и попробуйте обновить их, просто нажав на кнопку «Сохранить изменения», не меняя ничего.

6. Информация из Документации

Для более детальной информации о пленке пагинации в WordPress вы можете обратиться к официальной документации. Это поможет вам лучше понять, как проектировать свою пагинацию.

Заключение

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

Используйте эти советы, чтобы улучшить функциональность вашего сайта на WordPress, а также обеспечить удобство для пользователей!

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

Капча загружается...