- Вопрос или проблема
- Ответ или решение
- Проблема с пагинацией в WordPress: отсутствие постов на второй странице
- 1. Правильная Инициализация Переменной $paged
- 2. Проверьте Аргументы Запроса
- 3. Отображение Ссылок на Посты
- 4. Сброс Данных Поста
- 5. Проверка Постоянных Ссылок
- 6. Информация из Документации
- Заключение
Вопрос или проблема
У меня есть страница, на которой я хочу отображать только один пост на странице с пагинацией внизу для перехода к следующему/предыдущему посту. Это мой код:
<?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, а также обеспечить удобство для пользователей!