Вопрос или проблема
Пагинация статической главной страницы работает нормально на локальном сервере. Но когда я загрузил её на онлайн-сервер, она не работает. Я использую бесконечную прокрутку. Проблема только со статической главной страницей, когда я не использую статическую главную страницу, тогда всё работает. Вот мой код, помощь будет очень appreciated!
<?php
/*
Template Name: Layout 1
*/
?>
<?php get_header(); ?>
<div class="main">
<div class="container">
<div class="sixteen columns">
<div class="portfolio-all-main">
<?php
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
$args = array('post_type' => 'portfolio', 'posts_per_page' => 3, 'paged' => $paged );
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query( $args );
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
<div class="portfolio-itemv2">
<div class="pfolio-item-fixer">
<a href="https://wordpress.stackexchange.com/questions/214849/<?php the_permalink(); ?>" rel="bookmark" title="Постоянная ссылка на <?php the_title_attribute(); ?>">
<?php the_post_thumbnail(''); ?>
</a>
</div>
<div class="pwhites">
<h2 class="portfolio-title"><a href="https://wordpress.stackexchange.com/questions/214849/<?php the_permalink(); ?>" rel="bookmark" title="Постоянная ссылка на <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
</div>
</div>
<?php endwhile; ?>
<div class="pagi">
<div id="page-nav"><?php next_posts_link(__('')) ?></div>
</div>
<?php
$wp_query = null;
$wp_query = $temp;
?>
<div class="clear"></div>
</div></div>
</div> </div>
<script>
$(function(){
var $container = $('.portfolio-all-main');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '.portfolio-itemv2'
});
});
$container.infinitescroll({
navSelector : '#page-nav', // селектор для навигации по страницам
nextSelector : '#page-nav a', // селектор для ссылки на СЛЕДУЮЩУЮ страницу (страница 2)
itemSelector : '.portfolio-itemv2', // селектор для всех элементов, которые вы будете извлекать
loading: {
finishedMsg: '',
img: '<?php echo get_template_directory_uri(); ?>/images/ajax-loader.gif'
}
},
// при срабатывании вызов Masonry
function( newElements ) {
// скрыть новые элементы, пока они загружаются
var $newElems = $( newElements ).css({ opacity: 0 });
// убедитесь, что изображения загружаются перед добавлением в макет masonry
$newElems.imagesLoaded(function(){
// показать элементы, когда они готовы
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
}
);
});
</script>
<?php get_footer(); ?>
Используйте
https://codex.wordpress.org/Pagination#static_front_page
И
https://codex.wordpress.org/Creating_a_Static_Front_Page
Другие решения
https://stackoverflow.com/questions/20644991/wordpress-static-page-pagination
запрос отличается на статических главных страницах …
один хак после вашего цикла while
<?php if ($the_query->max_num_pages > 1) : // кастомная пагинация ?>
<?php
$orig_query = $wp_query; // исправление для работы пагинации
$wp_query = $the_query;
echo '<div class="both"></div>';
understrap_pagination(); //ваша пагинация
$wp_query = $orig_query; // исправление для работы пагинации
?>
<?php endif; ?>
.
Ответ или решение
Проблема с пагинацией на статической главной странице может быть связана с тем, как WordPress обрабатывает запросы и специфику использования WP_Query
на статических страницах. Ниже приведены подробные объяснения проблемы и рекомендации по её решению.
Анализ проблемы
Вы указали, что пагинация на статической главной странице не работает на сервере, хотя на локальном сервере все работает корректно. Вы используете бесконечный скроллинг (infinite scroll), и обнаружили, что когда статическая страница выключена, пагинация функционирует.
На статической главной странице WordPress изменяет стандартное поведение запросов, так как он загружает контент из установленной страницы (в разделе "Настройки" -> "Чтение") вместо стандартного цикла. Это может привести к путанице в переменных, связанных с пагинацией.
Решения
-
Убедитесь, что переменная
$paged
правильно инициализирована.В вашем коде вы правильно проверяете переменную
$paged
, но для обеспечения корректности можно добавить больше логики:if (get_query_var('paged')) { $paged = get_query_var('paged'); } elseif (get_query_var('page')) { $paged = get_query_var('page'); } else { $paged = 1; }
-
Создание нового запроса.
Вы создаете новый объект
WP_Query
, но в нем не передаете отфильтрованные параметры. Убедитесь, что передайте правильные параметры в массиве$args
.Например:
$args = array( 'post_type' => 'portfolio', 'posts_per_page' => 3, 'paged' => $paged );
В вашем коде эта часть уже правильно реализована.
-
Добавление поддержки пагинации.
После цикла
while
, добавьте следующий код для отображения пагинации:if ($wp_query->max_num_pages > 1) : // проверяем, что есть больше одной страницы $orig_query = $wp_query; // сохраняем оригинальный запрос $wp_query = $the_query; // используем наш запрос echo '<div class="both"></div>'; // добавляем разделитель // Выводим пагинацию (подставьте свой метод вывода) understrap_pagination(); $wp_query = $orig_query; // восстанавливаем оригинальный запрос endif;
-
Проверьте настройки сервера.
Иногда проблемы с пагинацией могут быть связаны с настройками сервера. Убедитесь, что ваш хостинг поддерживает необходимые параметры для работы с WordPress и адекватно настроены пермалинки. Попробуйте также обновить структуру постоянных ссылок в разделе "Настройки" -> "Постоянные ссылки".
-
Совместимость плагинов и тем.
Убедитесь, что все используемые вами плагины совместимы с вашей темой и не конфликтуют между собой. На сервере могут работать другие версии плагинов или тем, чем на локальном сервере.
Заключение
Проблемы с пагинацией на статических страницах WordPress могут быть вызваны несколькими факторами, включая неправильные запросы и конфликты в настройках. Проверьте указанные выше шаги, чтобы устранить проблему. Если проблема сохраняется, рассмотрите возможность создания отдельной страницы для вывода вашего контента, чтобы избежать конфликтов с запросами главной страницы.