Столкнулся сегодня с проблемой, когда не работает навигация на одном из сайтов вордпресс. Переходишь по страницам, а показывает одну и ту же страницу с записями. Думал дело в шаблоне (проверял на теме nerocity), но оказывается что многие сталкиваются с такой проблемой и на других шаблонах. Долго искал проблему, но я ее решил.
Все дело в запросе вывода записей — query_posts. Либо у вас в шаблоне он не правильно вызывается, либо вызывается несколько раз. Бывает когда этот запрос повторяется и последний «перебивает» первый, из-за чего и не работает навигация вордпресс.
Почему не работает навигация wordpress
Бывает еще неправильно заданы настройки в шаблоне вывода навигаций. Хочу отметить, что навигация может выводится стандартным способом (Далее, Назад), плагином wp-pagenavi или через функции темы. В первом случае достаточно наличие двух функций — next_posts_link и previous_posts_link. Например:
<div class=»nav-previous»><?php next_posts_link( __( ‘<span class=»meta-nav»>←</span> Older posts’ ) ); ?></div>
<div class=»nav-next»><?php previous_posts_link( __( ‘Newer posts <span class=»meta-nav»>→</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