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

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

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

Комментарии (226)

  1. Т.е. необходимость в использовании плагина отпадает, и, как следствие, количество запросов к БД будет уменьшено.

    WP-PageNavi не делает запросов к базе. Другие плагины могут делать один лёгкий запрос, возвращающий общее количество записей.

    • А как же чтение опций плагина?

      Я, конечно, в этих вещах не разбираюсь, но предполагал, что плагин все-таки дает большую нагрузку, чем просто php-функция.

  2. Стандартно все опции кэшируются, поэтому получение эквивалентно обращению к обычной php-переменной. Просто плагином удобней работать и он не зависит от шаблона.

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

  3. Дим, не разбирался еще с данной пагинацией, так как нет времени.
    Недавно добавил в закладки http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/
    У тебя оттуда код?

  4. Ох ты, как раз во время. Начал с утра шаблон дорабатывать, смотрю — новая статья! Спасибо, сейчас попробуем!

  5. Спасибо большое! Давно искал подобное решение, т.к. не всегда тема поддерживает нужные плагины. Подскажите пожалуйста, как сделать редирект с первой страницы (адрес сайта/page/1) на главную?

  6. Странно, что разработчики WordPress до сих не обернули это в стандартную функцию и включили в состав движка

  7. пользуюсь функцией от Попова. надо попробовать вашу. спасибо за статью.

  8. Сразу добавлю «5 копеек» для тех, кто будет работать с мультиязычностию или будет делать темы для локализации (сам сталкивался неоднократно):
    Если понадобится, в вышеприведенном коде строку 18 заменяем (точнее, дополняем) на

    
    if ($total == 1 && $max > 1) $pages = '<span class="pages">' . (__('Page', 'blank')) . ' ' . $current . ' ' . (__('of', 'blank')) . ' ' . $max . '</span>'."rn";
    

    ‘blank’, само собой, меняем на свой text domain

  9. А где CSS скрипт, всё сделал как написано но дизайна не вижу… нехватает CSS скрипта.

  10. Добрый день. Пробовал и этот метод, и с pagenavi, но не могу решить следующую проблему:

    Шаблон: page.php
    Вызов идет так:

    if (have_posts()) : while (have_posts()) : the_post();
    ---------
    $wplover_home = new WP_Query("post_type=page&post_parent=$post_parent");
    if ($wplover_home->have_posts()) : while ($wplover_home->have_posts()) :
    $wplover_home->the_post();
    ---------
    endwhile;
    if(function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' =>$wplover_home )); }
    ---------
    endwhile;

    Собственно так. Суть такова — идет вывод страницы, а под ней вывод всех ее «братьев и сестер». Может ли не работать пагинация из-за вложенности циклов?

    Спасибо.

    • Я в таких вещах не разбираюсь, поэтому ничем не могу помочь.

    • Глубина вложенности loop может быть любая (в разумных пределах).
      Попробуйте так:

      
      if (have_posts()) : while (have_posts()) : the_post(); 
            ---------
            global $page, $paged;
            $paged = ( !empty($paged) ) ? $paged : $page;
            $wplover_home = new WP_Query("post_type=page&post_parent=$post_parent&paged=$paged"); 
            if ($wplover_home->have_posts()) : while ($wplover_home->have_posts()) :
            $wplover_home->the_post();
                   ---------
            endwhile; 
            if(function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' =>$wplover_home )); }  
            ---------
      endwhile;
      
  11. Спасибо большое за помощь, все работает. Сейчас буду разбираться что есть что.
    Свежая и актуальная статья получилась :)

  12. Наличие постраничной навигации говорит об отсутствии или ущербности категоризации сайта. Не используется потенциал внутренних ссылок и теряется значительная часть НЧ. Поверьте.

  13. А можно CSS хоть в каком нибуть варианте а там я уже сам переделаю как мне нужно, please ??!?!?!

  14. Спасибо за функцию. Как раз думал про этот функционал. Будет чем заняться на выходных )

  15. У меня два вопроса:
    1) Почему Вы ссылаетесь называя «другим аналогичным решением» на какой-то левый материал. И автор Kama, выше — тоже туда же направляет. Какая-то подстава.
    2) Что это за вопрос в коде ? user_trailingslashit

  16. Отличное решение для вордпресс. Для меня как для разработчика своих сайтов интересен вопрос, а можно ли такую навигацию применить не на ворд пресс а в любой CMS

    • Отличное решение для вордпресс. Для меня как для разработчика своих сайтов интересен вопрос, а можно ли такую навигацию применить не на ворд пресс а в любой CMS

      Нельзя.

  17. Скрипт поломал кодировку. Как исправить проблему? Кодировал в UTF-8 без BOM.

  18. За материл спасибо. Долго он прятался от наших глаз) версия 2.1) Попробую реализовать у себя, посмотрим что будет с нагрузкой и что получиться в итоге.
    О результатах отпишусь.

  19. как вы оформили эти комментарии?
    как организовать нумерацию комментов?
    и как сама форма сделана так что есть так сказать визуальный редактор и можно код вставлять?

    • как вы оформили эти комментарии?

      C помощью CSS.

      как организовать нумерацию комментов?

      Такой информации полно в Интернете, пользуйтесь поисковиками.

      и как сама форма сделана так что есть так сказать визуальный редактор и можно код вставлять?

      Специально для вас в этом редакторе есть кнопка со знаком вопроса.

  20. Специально для вас в этом редакторе есть кнопка со знаком вопроса.

    я имел ввиду не предосмотр, а вот эти кнопки: code, tt, b-quote, link, i , b

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