Постраничная навигация в комментариях WordPress без плагина

8 августа 2011 г.

Постраничная навигация в комментариях WordPress без плагина

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

Для этого используется специальная функция paginate_comments_links(), которая появилась в WordPress версии 2.7. Работает она на основе функции вывода постраничной навигации в архивах, а потому очень на нее похожа.

Код выглядит следующим образом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function wp_comments_corenavi() {
  $pages = '';
  $max = get_comment_pages_count();
  $page = get_query_var('cpage');
  if (!$page) $page = 1;
  $a['current'] = $page;
  $a['echo'] = false;

  $total = 0; //1 - выводить текст "Страница N из N", 0 - не выводить
  $a['mid_size'] = 3; //сколько ссылок показывать слева и справа от текущей
  $a['end_size'] = 1; //сколько ссылок показывать в начале и в конце
  $a['prev_text'] = '«'; //текст ссылки "Предыдущая страница"
  $a['next_text'] = '»'; //текст ссылки "Следующая страница"

  if ($max > 1) echo '<div class="commentNavigation">';
  if ($total == 1 && $max > 1) $pages = '<span class="pages">Страница ' . $page . ' из ' . $max . '</span>'."\r\n";
  echo $pages . paginate_comments_links($a);
  if ($max > 1) echo '</div>';
}

Этот код вставьте в файл functions.php вашего шаблона. Здесь, как видите, те же самые 5 опций. Для наглядности я их также отделил разрывом строки.

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

<?php if(function_exists('wp_comments_corenavi')) wp_comments_corenavi(); ?>

Ну и, конечно же, в html-коде полученной навигации присутствуют все необходимые классы, чтобы ее можно было красиво оформить с помощью CSS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div class="commentNavigation">
  <a class="prev page-numbers" href="http://wordpress32/post/comment-page-6/#comments">&laquo;</a>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-1/#comments'>1</a>
  <span class="page-numbers dots">...</span>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-4/#comments'>4</a>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-5/#comments'>5</a>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-6/#comments'>6</a>
  <span class='page-numbers current'>7</span>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-8/#comments'>8</a>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-9/#comments'>9</a>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-10/#comments'>10</a>
  <span class="page-numbers dots">...</span>
  <a class='page-numbers' href='http://wordpress32/post/comment-page-14/#comments'>14</a>
  <a class="next page-numbers" href="http://wordpress32/post/comment-page-8/#comments">&raquo;</a>
</div>

Пользуйтесь.

P.S. Не забудьте, что для того, чтобы работала постраничная навигация в комментариях, необходимо активировать разбивку комментариев на страницы, зайдя в админку на страницу “Параметры - Обсуждение”.

* * *

Про различные полезные WordPress плагины, информация о которых может пригодиться как начинающим блоггерам, так и бывалым, читайте на сайте seomans.ru, посвященном созданию и ведению блогов.

Теги: , , автор: Dimox | рубрика WordPress

Комментарии (30): »

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

  2. И еще очень классная кнопка “Отправить коментарий”, аж захотелось написать :)

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

  4. Ну да, каждому свое. Еще сильно бесит когда сначала новые коментарии.

  5. не у софкейза случаем взял идею кнопки такой? ) А то уж больно похожи

  6. Интересно, не знал. Думаю сделаю так, после редизайна :)

  7. А у меня файл functions.php начинается со строк:
    <?php
    if ( function_exists(’register_sidebar’) )
    register_sidebar();

    это сразу после этой строки прилепить указанный вами код?

  8. Не хватает только примерчика css-кода…

  9. Спасибо за статью, интересно.
    Будем пробовать реализовать=)

  10. Ну и что… Мне например нужно что бы комментарии индексировались. У меня это основной контент. http://hozjajstvo.ru Для меня этот вариант стал спасением. Перепробовал кучу плагинов, все отстой, а здесь все просто, и именно так как нужно и без лишней нагрузки на базу.
    И грузится быстрее и людям просматривать легче.

  11. а как подобное сделать в темах от YooTheme? у них немного другие шаблоны WP у меня стоит от них тема гляньте тут

  12. Все испробованные плагины для того же самого или не работали или оказались кривыми, так что то моя последняя надежда сделать постраничную навигацию комментариев, но, к сожалению, я внимательно перечитал 2 раза но так и не понял как это все сделать, сам движок мне давно знаком, а вот php не понимаю. Нельзя ли поподробнее инструкцию?

  13. by1, хабр не эталон…

  14. А можно пример с использованием драйвера PDO для базы.. а то с sql на вы…
    А такой способ постраничной навигации подойдет для примерно 2500 строк?

  15. 19
    Александр
    Александр

    У меня не получилос вставил коды ну так же как и раньше пишет
    Старые комментарии
    Свежие комментарии »

    по страницам не разбился что делать подскажите пожалуйсто!

    @
  16. Можно быть надо сбросить кэш сайта, либо что-то неправильно делаете. Наугад сложно сказать.

  17. 21
    Александр
    Александр

    по второму пункту у меня после него вставить? и по третему пункту я не понял это где надо делать?

    так же по первому пункту

    у меня начало такое

    <?php

    // Get URL of first image in a post
    function catch_that_image() {
    global $post, $posts;
    $first_img = ”;
    ob_start();
    ob_end_clean();

    @
  18. 22
    Александр
    Александр

    вот мой блог http://www.wordpress.shop21vek.ru/ подскажите мне пожалуйсто!

    @
  19. 23
    Александр
    Александр

    помогите пожалуйсто что надо в этом коде менять ?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="commentlist">
      <?php wp_list_comments2(); ?> <?php if(function_exists('wp_comments_corenavi')) wp_comments_corenavi(); ?>

      </div>

      <div class="navigation">
        <div class="alignleft"><?php previous_comments_link(N) ?></div>
        <div class="alignright"><?php next_comments_link(N) ?></div>
      </div>
    @
  20. Вот тут очень хорошо расписано, как правильно редактировать файл functions.php - http://wp-kama.ru/id_71/fayl-shablona-functionsphp-v-wordpress.html

  21. Только удалить этот код:

    1
    2
    3
    4
    <div class="navigation">
         <div class="alignleft"><?php previous_comments_link(N) ?></div>
         <div class="alignright"><?php next_comments_link(N) ?></div>
       </div>
  22. 26
    Александр
    Александр

    Уважаемый блогер вебмастер ей богу я готов вам руки целовать вы мне очень помогли! я ваш должный честное слово если что обращайтесь shop21vek@ya.ru

    @
  23. 27
    Александр
    Александр

    по 3 пункту в каком php файле находиться чтоб красиво отредактировать отображения цифр?

    @
  24. Это делается с помощью CSS. Стили меняются в файле style.css.

  25. Интересно, по по-вашему слово длинная страница… 30 комментариев смотрю у вас и нормально… нет никакой постраничной навигации, сколько штук 200 должно быть на странице?

    @

Присоединяйтесь к обсуждению!

Отправляя кoммeнтapий, вы автоматически принимаете правила кoммeнтиpoвaния на этом блоге.

Правила кoммeнтиpoвaния на блоге dimox.name:

  1. Первый кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.
  5. Комментарии не по теме удаляются.

Подписаться, не комментируя
  • Похожие статьи
  • Предыдущие из рубрики