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

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

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

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

    и еще хочу спросить, в чем может быть проблема что не отображаются аватары?

  2. 3
    muskull
    @

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

    с этим разобралься…. в настройках плагина

  3. 4

    How about something in English? I bet you have great content. I saw some WordPress coding. Let me know if you have a site in english.

    Cheers!

    Mark

  4. 6
    Виктория

    Спасибо за подсказку. Очень понравилось это решение. Класно! И плагин не нужен :)

  5. 7
    Илона

    Совершенно не понимаю, почему такое отличное решение вызвало такое количество агрессии у посетителей. Лично мне все очень понятно и я вам благодарна за подсказку.

  6. 9
    kolya
    @

    как прописать в css чтоб нажатая страница была в рамке и троеточие

    сайт droid.jino.ru

    css:

    }
    .pagenavi a,.pagenavi a:link, .pagenavi a:visited{

    padding: 3px 10px 3px 10px;
    margin: 2px 0px 2px 0px;
    border: 2px solid blue;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    color: blue;
    text-decoration: none;
    background-color: white;
    font-weight: bold;
    }
    .pagenavi a:hover {
    padding: 8px 10px 3px 10px;
    border: 2px solid black;
    color: white;
    background: blue;
    font-weight: bold;
    }
    .pagenavi a:active {
    padding: 8px 10px 3px 10px;
    border: 2px solid black;
    color: Red;
    background: blue;
    font-weight: bold;
    }

    • 10

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

    • 11
      kolya
      @

      add
      поставил твой код, добавил span.current для выделения текуцей страницы, остался последний вопрос как выделить троеточее в рамку…
      как прописать в css чтоб нажатая страница была в рамке и троеточие

      сайт droid.jino.ru

      css:

      }
      .pagenavi a,.pagenavi a:link, .pagenavi a:visited{

      padding: 3px 10px 3px 10px;
      margin: 2px 0px 2px 0px;
      border: 2px solid blue;
      -moz-border-radius: 5px;
      -webkit-border-radius: 5px;
      color: blue;
      text-decoration: none;
      background-color: white;
      font-weight: bold;
      }
      .pagenavi a:hover {
      padding: 8px 10px 3px 10px;
      border: 2px solid black;
      color: white;
      background: blue;
      font-weight: bold;
      }
      .pagenavi a:active {
      padding: 8px 10px 3px 10px;
      border: 2px solid black;
      color: Red;
      background: blue;
      font-weight: bold;
      }

  7. 13

    Хороший тутор, спасибо большое. Использовать этот код совместно с wptouch можно?

  8. 15

    А можно это решение прикрутить к пользовательским типам записей и таксономии

  9. 18
    Herbst
    @

    Для произвольных типов записи в некоторых случаях можно вот такой код добавить для того чтобы стандартная пагинация включилась:

    add_action( 'parse_query','changept' );
    function changept() {
    set_query_var('post_type', array('post','shopitem'));
    return;
    }

    По аналогии и с таксономиями можно поступить

    • 19
      Herbst
      @

      Код, конечно, не юзабельный, но принцип работает )
      В частности, нужно сделать проверку is_admin перед set_query_var и так далее

      Стандартная пагинация отлично работает на страницах таксономий и архивов типов записи. Если нужно, скажем, вывести посты произвольного типа на главной (чтобы плюс постраничная навигация работала корректно), то можно вот этот код использовать в functions.php

      add_filter( 'pre_get_posts', 'my_homepage_custom' );
      
      function my_homepage_custom ( $query ) {
      	if (is_home() && false == $query->query_vars['suppress_filters']) $query->set( 'post_type', array('shopitem'));
      	return $query;
      }
  10. 20
    zetrider

    Добрый день,
    Может ли ваша функция корректно работать имея в адресной строке посторонние GET параметры?

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

    Спасибо.

  11. 22

    Спасибо, я как то против плагинов)) придется прикручивать и тестировать;)

  12. 23

    Добрый день. Частично не работает постраничная навигация. а именно не работает в рубриках, хотя если смотреть в записях автора то она отображается нормально, также в поиске работает, пробовал разные плагины ставить, писать в ручную, но проблема все также осталось, уже не знаю куда копать. версия wordpress 3.1, на данный момент сейчас постраничную навигацию выводит плагин стоит page-navi. может кто сталкивался?!

  13. 26
    @

    как в вордпресс для пагинации вставить nofollow
    без правки кода движка?
    нигде найти не могу(

  14. 28
    kirill

    спасибо. ща будем ковырять)

  15. 29
    Елена

    А в каком месте вставить эту функцию в functions.php, что в любое место? Я посмотрела, там довольно таки большой шаблон. Не могу разобраться, а очень надо. Новичок я еще. Помогите пожалуйста. Спасибо

  16. 31

    Здравствуйте !
    Попробовал описанный Вами вариант, сделал все как описано вставил функцию в файл functions.php и указал вывод в файле page.php но нечего не поменялось.
    Может подскажите в чем проблема ?

  17. 34
    Алексей Семенов

    а кнопки первая и последняя страница эта функция не выводит?

  18. 37
    Vlad

    А вы не подскажете, как прописать тайтл для страниц из списка, а то когда нажимаешь на любую цифру страниц, то открывается страница с общим тайтлом, а не с номером страницы в тайтле?

    Написал и сам чуть не запутался)

  19. 39
    Дзедзик
    @

    Время от времени при разработке сайтов возникает потребность в следующем коде:

    Тут чтото выводим

    Тут подключаем пагинацию.

    Допустин на главной странице нужно вместо всех постов выводить посты только из некоторых категорий, следовательно нужно прописывать такой запрос.. Но при его использовании не работает пагинация (Вашу тоже потестил). То есть количество страничек выводится, линки на них есть, но при переходе по ним мы опять попадаем на первую страницу, хоть в урле пишет например /page/4/.

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

    Подскажите плз кто имел с таким дело, как решить такую проблему?

    • 40

      Решение здесь — http://wphacks.name/pagination-on-query-posts/

      • 41
        Дзедзик
        @

        Большое спасибо! Давно искал решение, сейчас буду пробывать

      • 42

        Привет. Слушай а ты не сталкивался с такой ситуацией. Есть сайт на WP. На нем продвигаются категории.Текст на странице с определенной категорией выводиться с помощью echo category_description (); т.е. тот что в описании для категории каждой. И есть постраничная навигация на категориях. Т.е. заходим в раздел, там заголовок, потом текст, потом список товаров и навигация. Переходим на вторую страницу — там соответственно также, только к тайтлу добавляется бла бла — Страница 2.
        Так вот, вопрос вот в чем — можно ли как то написать условие , чтобы при переходе на страницу, отличную от страницы 1 категории, текст из description не выводился? Т.е. на первой странице к примеру есть текст, а нажимаем на вторую и далее, то показывается просто список товаров. На мой взгляд так с точки зрения SEO будет лучше, чтобы дубли не плодить.

  20. 45

    А вот интересно насколько блог начинает шустрее работать при такой навигации без плагина? Кто нибудь проверял?

  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).'&paged='.$wp_rewrite->preg_index(2));
    	$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    }

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

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

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