Не работает пагинация вордпресс

Не работает навигация wordpress

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

Все дело в запросе вывода записей — query_posts. Либо у вас в шаблоне он не правильно вызывается, либо вызывается несколько раз. Бывает когда этот запрос повторяется и последний «перебивает» первый, из-за чего и не работает навигация вордпресс.

Почему не работает навигация wordpress

Бывает еще неправильно заданы настройки в шаблоне вывода навигаций. Хочу отметить, что навигация может выводится стандартным способом (Далее, Назад), плагином wp-pagenavi или через функции темы. В первом случае достаточно наличие двух функций — next_posts_link и previous_posts_link. Например:

<div class=»nav-previous»><?php next_posts_link( __( ‘<span class=»meta-nav»>&larr;</span> Older posts’ ) ); ?></div>
<div class=»nav-next»><?php previous_posts_link( __( ‘Newer posts <span class=»meta-nav»>&rarr;</span>’ ) ); ?></div>

Во втором случае эти строки заменяются функцией wp-pagenavi, которая настраивается плагином. В третьей случае все зависит от темы и от того, как автор вызывает навигацию.

Если у вас правильно настроен плагин или стандартный вывод навигации, но она по-прежнему не работает, то стоит искать следующую функцию в файлах Вашего шаблона — query_posts.

В каких файлах настраивается навигация вордпресс

Обычно код навигации нужно настраивать в страницах index.php, archive.php, category.php и search.php. Часто делают так, что код нужно менять в одном месте, а уже оттуда он подтягиваться в вышеупомянутые файлы. Это файл loop.php, а в некоторых шаблонах — pagination.php. Если вам нужен код оригинального файла pagination.php в шаблоне nerocity — напишите, я его сброшу или выложу. Но проблема с навигацией не в нем. У меня проблема была в файле loop.php, когда я захотел выводить записи в обратном порядке. Я вызывал повторно query_posts, из-за чего был конфликт в коде.

Как исправить ошибку навигации вордпресс

Вставьте в файле loop.php (или index.php, category.php и т.д.) следующий код:

global $query_string;
query_posts( $query_string . ‘&order=DESC’ );

Не работает пагинация вордпресс
Не работает навигация вордпресс

Если вы хотите чтобы записи выводились в обратном порядке (новые в конце), то этот:

global $query_string;
query_posts( $query_string . ‘&order=ASC’ );

Но о записях в обратном порядке я напишу отдельный пост.

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

0 Comments

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *