Решение проблем с постраничной навигацией

2014-03-07

“Ура! Заработало!” – этот радостный клич рвется из моей груди после того, как я потратила четыре бессонных часа для решения проблемы с отображением постраничной навигации на своем главном сайте. Наконец-то найдено верное решение, реализована поставленная задача, и я спешу сохранить результат потраченных усилий в этой статье.

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

Навигация прекрасно работала на главной странице, для перемещения по страницам новостей, состоящих из записей всех имеющихся категорий. Однако с наполнением сайта большим числом записей возникла необходимость разбить на страницы  и отдельные разделы. Вот тут-то я и столкнулась с проблемой – при добавлении к циклу для вывода записей отдельной категории

строки вывода постраничной навигации

ничего не происходило.

Я пробовала использовать различные циклы и способы для вывода записей одного отдельного раздела (категории), но в паре с попыткой вывести постраничную навигацию получала то отсутствие навигации, то вообще пустую страницу.

На данный момент мои познания в PHP ограничены основными сведениями, необходимыми для построения тем для WordPress, а потому в поиске помощи для решения поставленной задачи я обратилась к наработкам старших товарищей, проще говоря “загуглила” и “заяндексила” свою проблему. На мое удивление, список предлагаемых способов решения проблем с навигацией оказался не так уж и велик, как я предполагала, а самое обидное, мне ни один из них не помогал…

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

и добавила перед ним функцию query_posts с указанием нужной категории и количества записей на одной странице:

При этом внизу редактируемой страницы наконец-то появлялись кнопки постраничной навигации!

Однако при переходе с ее помощью на следующую страницу в браузере отображалось содержимое первой странички! В адресной строке менялись номера страниц, например, http://sait.ru/recepties/page/3/, http://sait.ru/recepties/page/4/, но все они были точными копиями друг друга и первой страницы!

Никакие из найденных на просторах интернета советы мне не помогали, но интуитивно я чувствовала, что получившийся код – самый верный для достижения моей цели. Просто чего-то в нем не хватает…

Уже хотела выключать компьютер, оставив все как есть, без постраничной навигации, но чувство, что от решения проблемы меня отделяет всего одна-две строчки кода не оставляло меня. Да и смогу ли я спокойно спать, зная, что задача осталась нерешенной и в следующий раз мне придется все начинать сначала? Я поглубже вдохнула и снова углубилась в поиски.

И, счастье! Все же нашла эту статью и смогла устранить проблему с выведением одного и того же контента при переходе на другую страницу посредством постраничной навигации!

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

Вот они, эти золотые строки!

Нужно подставить их перед циклом вывода записей вместо строки

А далее дописать для функции query_posts дополнительные необходимые параметры:

  • если нужно подкорректировать всего один параметр (к примеру, мы хотим на странице автора выводить другое, чем обычно, количество постов), то к этому параметру надо прибавлять переменную $query_string, которая позволит не забыть про все остальное. Выглядеть это должно примерно так: $query_posts($query_string.”&showposts=5″);
  • если надо вывести все категории, кроме одной, пишем query_posts(«cat=-3″);
  • если надо вывести все категории, кроме нескольких, пишем query_posts(«cat=-1,-2,-3″);
  • если вместо постов надо вывести содержимое страницы, пишем query_posts(‘page_id=7′); или query_posts(‘pagename=about’);
  • если нам нужен какой-то конкретный пост, пишем query_posts(‘p=1′); или query_posts(«name=first-post»);
  • если нам нужны записи за конкретный год и месяц, пишем query_posts(‘monthnum=12&year=2004′);

В моем случае нужно было вывести записи категории 4 и ограничить их число на одной странице значением 8 штук. Поэтому получился следующий код:

Теперь постраничная навигация работает как надо и я могу использовать данное решение для других индивидуальных страниц категорий и прочих задач. Чем сейчас и займусь ))

Главное – отныне у меня есть памятка  по теме решения проблем с постраничной навигацией. Надеюсь, эта вебмастерская заметка будет полезна и вам.

Статья пригодилась? Буду признательна, если поделитесь в соцсетях:

Комментарии


Комментариев пока нет, будьте первым.

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">