Постраничная навигация в WordPress без плагина (альтернатива WP-PageNavi)

Постраничная навигация в WordPress без плагина (альтернатива WP-PageNavi)

Практически любой блоггер, который ведет свой блог на движке WordPress, знаком с плагином WP-PageNavi, который выводит постраничную навигацию такого вида: Но не каждый знает (включая меня до недавнего времени), что WordPress имеет встроенную функцию (начиная аж с версии 2.1), которая реализует практически тот ...

Полезные комментарии (1)
Комментарии (215)
  1. 1

    Спасибо вам за код. Вставил, мои две страницы отображает нормально. То что мелко, я сам через CSS исправлю

  2. 2
    Велимудр

    Проверил, не работает, или работает не правильно.
    Другими словами каждая следующая страница как первая, статьи, переходящие на другую страницу не показываются, только дублируют первую.
    Указал в настройках вывод 5-ти статей, если эта настройка и влияет на функцию, в таком случае функция для меня бесполезна, так как конечный пользователь ничего не смыслит даже в html, не говоря уж о php.
    Если же я что-то не так делаю, будьте добры, укажите пожалуйста.
    В ней ничего не менял, поставил как есть.

  3. 7
    icamys

    Переменная $wp_rewrite в коде не используется. Ее стоит убрать из листинга.

  4. 9

    Спасибо, прекрасно написано что куда и как сделать. Думаю ни у кого не составит труда

  5. 10
    Looler
    @

    Dimox спасибо скрипт, но вот почему то при переходе на вторую или третью страницу, я попадаю на страницу 404, почему не находит?

    P.S. такая же проблема с плагином WP-PageNavi.

    • 11

      Такая проблема встречается при использовании query_posts() или WP_Query(). Решение здесь.

      • 12
        Looler
        @

        К сожалению не помогает, исчезли и новости и сама навигация. ((( Появились почему то текст в виде ссылки на Главную + Читать далее, которая тоже ведет на главную.

        З.Ы.: у меня вывод списка новостей (анонсов) через — the_excerpt();

        • 13

          Больше ничем не могу помочь. Возможно, у вас где-то ошибка в коде.

          • 14
            Looler
            @

            Вот в чем оказалась проблема, может кому пригодится:
            В админке в разделе «Настройки -> Постоянные ссылки» в поле «Префикс для рубрик» у меня была указана «.» (точка), для того, что бы убрать из УРЛ-а страниц статьей (новостей) слово «../category/..», это и приводило к тому, что при нажатии на «пагинацию» я всегда попадал на 404 страницы, убрал «точку» и все заработало.

            Установил плагин «Remove Category URL» и этим все решилось, убралось слово «../category/..» в УРЛ-е и пагинация работает без проблем.

            Удачи в разработках!

  6. 15
    Елена
    @

    супер, DIMOX — поставила, все работает, теперь css украшательством получившихся цифирек займусь, ну не люблю я плагины — большое вебмастерское спасибо!

  7. 17
    Looler
    @

    ой ИЗВИНЯЮСЬ, ошибочка, вот встроиная пагинация Вордпресса —

    <?php the_posts_pagination(); ?>
  8. 18
    Елена
    @

    Ок, Looler — и правда работает фишка, как хорошо заглянула сюда! Еще такие же фичи есть в 4.1?

  9. 20
    Дмитрий

    Может кому пригодится, но пагинация уже встроена в WP начиная с версии 4.1, функция the_posts_pagination

  10. 21
    Андрей

    Благодарю за полезную информацию. Очень пригодилась!

  11. 22

    А как в этой функции сделать так что бы убрать кнопки вывод к первой и последней?

  12. 24
    Максим

    Привет! Сделал пагинацию как у Вас, пагинация вывелась как и должна, но при переходе по ссылке браузер выдает ошибку — такой страницы нет, ошибка 404. Использую query_posts(), настраивал опираясь на этот пост. В чем может быть проблема?

  13. 25

    Нужная статья, планирую сделать постраничную навигацию в своем блоге.

  14. 26

    Здравствуйте! А как добавить кнопки «первая страница» и «последняя страница» ?

  15. 27
    Алексей

    Здравствуйте. Подскажите, пожалуйста, у меня на главной странице выводятся последние записи. Но вместо навигации, а я указал, чтобы выводилось по пять постов, после пяти постов следует строка с надписью page 2, а потом идут следующие пять постов, потом опять надпись page 3 и посты. И все на одной странице. Что это за прикол такой.

  16. 28
    Kobeta

    Всё бы ничего, но уже несколько часов ищу плагин, который разбивает УЖЕ опубликованные статьи на 2-3 страницы, в зависимости от длинны. Неужели такого нет? Указать например, после 3000 символов создавать новую страницу. Всё.

  17. 29
    Анна

    Спасибо большое, за статью.
    Очень доступно и понятно.

  18. 30
    Ильяс

    Спасибо большое, очень помогли! :)

  19. 31

    Спасибо тебе большое, я перебрал кучу кодов но никак не мог решить эту задачу. ++++ Если хочешь, можешь посмотреть результат на моем сайте.

  20. 32
    Puchnin

    Восторг и овации! Пагинация прикрутилась как родная, спасибо!)

  1. 1

    В общем у всех, кто использует код из данной статьи, одна беда:
    Вариант 1: сайт.ру/category/категория/page/2 — работает
    Вариант 2: сайт.ру/категория/page/2 — не работает (но сюда ссылается)

    И че делать все хз как я погляжу…
    Ладно, копируем все что я ниже написал…

    //Удаляем category из УРЛа категорий
    add_filter('category_link', create_function('$a', 'return str_replace("category/", "", $a);'), 9999);
    
    add_filter('user_trailingslashit', 'remcat_function');
    function remcat_function($link) {
    	return str_replace("/category/", "/", $link);
    }
    add_action('init', 'remcat_flush_rules');
    function remcat_flush_rules() {
    	global $wp_rewrite;
    	$wp_rewrite->flush_rules();
    }
    add_filter('generate_rewrite_rules', 'remcat_rewrite');
    function remcat_rewrite($wp_rewrite) {
    	$new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&amp;paged='.$wp_rewrite->preg_index(2));
    	$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    }

    И добавляем этот код в functions.php
    Тогда у вас будет работать и первый и второй варианты. Ну что тоже не очень хорошо. Можно в robots.txt закрыть /category/
    или сделать редирикт, но тут сами решайте.

    Автор, обнови пост.

Ваш комментарий