Постраничная навигация для WordPress блога

Предложенный код добавит на главной странице номера страниц, вместо стандартного “предыдущая” и “следующая”. Согласитесь, постраничная навигация намного удобнее, особенно, если записей в блоге много. Скрипт не мой, и я уже не помню, где его взяла. Смысл его в том, чтобы добавить постраничную навигацию для главной страницы блога, а также для страниц рубрик и тегов. Пусть будет тут, чтобы не потерялся.

Конечно, для реализации пагинации для блога можно использовать плагин, но я предпочитаю использовать их как можно меньше.

Сначала, добавляем несколько строк кода в конец файла функций используемой темы:

Теперь в то место шаблона, где нужно высвести постраничную навигацию, вставляем код для вызова функции:

После этого, на главной странице блога, при наличии достаточного количества записей, должны появиться цифры с номерами страниц. Теперь давайте оформим созданную постраничную навигацию при помощи стилей:

На этом все. Посмотреть пример использования пагинации для wordpress вы можете на главной странице моего блога.




44 комментария к “Постраничная навигация для WordPress блога”

  1. Тимур

    Здравствуйте Ирина! Что то давно не слышно от вас новостей. Статья полезная так как делается без плагина все. А это меньше нагрузки.

    Ответить
  2. Александр

    Ну да, почти всё что делается вручную и без плагина, а значит… Меньше нагрузки…

    Ответить
  3. Алексей

    Здравствуйте! Попробовал у себя поставить код, не отображается навигация…. 🙁

    Ответить
  4. Olga

    +1 не отображается навигация.может от темы зависит.Автору блога лучше писать поконкретнее,соглашусь с другими читателями – порой непонятно даже не новичку.

    Ответить
    • Ирина

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

      Ответить
      • Olga

        да.не появляются кнопки с номерами страниц. я поэтмоу и написала – наверно от темы зависит, если у всех этот код работает, а у кого то нет.

        Ответить
        • Ирина

          Ольга, а у Вас на сайте точно есть больше 10 записей, которые должны выводиться на главной?

          Ответить
  5. Olga

    Ирина, точно) в блоге 30 записей – есть 3 страницы. поставила плагин – нумерация отображается. но хотелось без плагина (лишней нагрузки на сервер) обойтись.

    Ответить
    • Ирина

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

      Ответить
  6. Кеша Аксенов

    Добрый день,

    все поставил согласно вашему посту. Все получилось, спасибо.
    Но, когда я нажимаю на страницу 5 я попадаю на нее, но выделенный цвет остается на первой, а должен перейти на цифру 5.
    Что не так?
    Спасибо

    Ответить
    • Ирина

      У Вас почему-то не отрабатывает 25-я строка функции. Это, скорее всего, зависит от темы и используемых плагинов. Почему конкретно – не знаю, надо смотреть код.

      Ответить
  7. Кеша Аксенов

    не подскажите где в теме можно это посмотреть? в каком файле?
    Спасибо

    Ответить
    • Ирина

      Все темы разные, поэтому где конкретно у Вас – не подскажу 🙂 Для начала – как у Вас выводится количество записей на странице? Через “Параметры – Чтение – На страницах блога отображать не более”, или где-то в теме (может, файл index, loop, или еще где-то, где у Вас есть вот такое: while ( have_posts() ), указано другое значение?). Попробуйте поменять количество записей на страницах, и посмотрите, как будет работать.

      Ответить
  8. Кеша Аксенов

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

    И получается, ставим галочку на записи + популярные. На стандартные записи НЕТ галочки. Итог: записи ВСЕ выводятся, а постраничной навигации НЕТ.
    Ставим галочку на Стандартные записи, постраничная навигация ЕСТЬ, записей – популярные и случайные – НЕТ.

    Никто не смог рассказать что делать, куда смотреть.
    Возможно Вы мне подскажите?
    Спасибо

    Ответить
    • Ирина

      Вам нужно код для вызова функции навигации вставить еще в несколько файлов в теме (возможно, что в том же файле, где Вы вставляли, но в разных местах), так как в теме, похоже, используется несколько разных циклов для вывода стандартных, случайных и популярных записей.
      Возможно, тогда и предыдущая проблема решится.

      Ответить
  9. Кеша Аксенов

    Спасибо, попробую пошаманить)

    Ответить
  10. Сергей

    Здравствуйте, Ирина.
    1, Скажите а как сделать что бы изначально отражалось не три а 7 страниц.
    2, Скажите а можно ли сделать что бы “Предыдущая” была визде и даже на первой странице, только на первой странице она не активная и по этому в span а на остальных тег “А” ну как обычно.

    Спасибо.

    Ответить
    • Ирина

      Сергей,
      1) Чтобы поменять количество страниц, нужно изменить число в $range. Оно отвечает за то, сколько страниц выводить до и после текущей страницы, например, если поставить 3, то будет так: 3 страницы – текущая – еще 3 страницы, то есть всего 7: function oriolo_pagination($pages = '', $range = 3)
      Можете попробовать менять это значение, как Вам нужно.
      2) За вывод кнопки “Предыдущая” отвечает строка 19 в коде. Там нужно поменять условия. Но мне сейчас лень думать (извините, у меня половина двеннадцатого ночи), так что попробуйте сами – там надо, скорее всего, вообще if до echo убрать.

      Ответить
      • Сергей

        Спасибо, Ирина)
        У меня тут еще вопрос возник, можно что бы изначально было 7 и это число не менялось, т.е. не такое условие что 3 до и 3 после, а сугубо сем всегда ток цифры страниц менялись..
        И да насчет if не понял чет(((

        Ответить
        • Ирина

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

          должно быть так:

          Ответить
  11. Сергей

    В вашем блоге есть регистрация? (сжечь после прочтения)

    Ответить
    • Ирина

      Нет, регистрации нет и никогда не будет, так как это мой личный блог 🙂

      Ответить
      • Сергей

        Так наоборот нужно развивать свой блог 😉 Вы же симпатяжка )

        Ответить
        • Ирина

          Спасибо 🙂 Но все-таки личный блог – это не сообщество или соц. сеть, поэтому регистрации не будет 🙂

          Ответить
          • Сергей

            Дело конечно Ваше) Но я был бы в первых рядах зарегистрированных )))

            Ответить
          • Сергей

            У меня еще вопрос:
            У меня этот код выводит вот так:

            А как сделать что бы выводило так:

            из которых “24” это последняя.
            Сейчас код такой:

            Ответить
    • Ирина

      Да нет же, с кодом как раз все нормально 🙂

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

      Потому что обрезался html, и из этого объяснения ничего не понятно:

      У меня этот код выводит вот так:
      А как сделать что бы выводило так:
      из которых “24″ это последняя.

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

      Ответить
  12. Вадим

    Спс, за готовую функцию. Все встало как родное ). Немного переделал – в вывод списком, просто не хотелось верстку по-новой делать.

    Ответить
  13. Александр

    Здраствуйте. У меня резиновая тема. С предыдущей темой проблем не было. А на новой не могу настроить. В какие файлы вставлять эти кода

    Ответить
    • Ирина

      Александр, то, резиновая тема или нет, на навигацию не влияет. Нужно добавлять в файл функций основной код, и вызов в ту часть шаблона, где нужна навигация (обычно index.php и archive.php), но я не могу сказать, куда именно в Вашей конкретной теме.

      Ответить
  14. Александр

    Вот так выглядит код в файле index.php

    Ответить
  15. Александр

    Воспользовался сервисом. Вот так

    Ответить

Оставить комментарий