WP-CommentNavi
Как ни странно, но создатели WordPress никак не хотят добавить в движок постраничную навигацию, отдавая эту функцию на откуп различным плагинам. То есть формально то постраничная навигация в WordPress существует, но ограничена строго двумя страницами – "предыдущая" и "следующая", что естественно, мало кого устраивает. В WordPress 2.7 появилось долгожданное нововведение в виде разделения комментариев на страницы, но с той же проблемой, что и всегда: для более-менее нормальной настройки навигации по этим страницам нам придется использовать дополнительный плагин WP-CommentNavi, о нем и будет идти речь. До установки плагина навигация у нас будет выглядеть так:

После установки плагина мы получим что-то похожее на:

После небольшого изменения кода плагина и css стилей можно добиться совершенно различного вида этой навигационной панельки:

Скачиваем оригинальный плагин с его домашней страницы или берем русскую версию , устанавливаем:
1. Распаковываем архив.
2. Копируем папку wp-commentnavi в /wp-content/plugins/.
3. Заходим в админку блога на вкладку "Плагины" и активируем плагин.
Чтобы встроить навигацию в ваш шаблон найдите в файле comments.php строчки (на примере шаблона Default):
<div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div>
И замените их на:
<?php if(function_exists('wp_commentnavi')) { wp_commentnavi(); } ?>
По умолчанию ссылку на страницу всех комментариев плагин не выдает, ее надо выводить отдельным кодом:
<?php if(function_exists('wp_commentnavi_all_comments_link')) { wp_commentnavi_all_comments_link(); } ?>
Надо заметить, что плагин будет работать только если вы вставили оба эти кода строго после цикла The Comment Loop. То есть вывести навигацию перед выводом самих комментариев у вас не получится.
Постраничная навигация по комментариям у вас уже работает, а настройки выводимого текста вы можете изменить в Параметрах\CommentNavi. Не хочу повторяться со своими настройками, которые я уже описывал в статье о плагине WP-PageNavi - если вам это необходимо, то возьмите их там (автор плагина один и тот же и настройки плагинов практически идентичны).
Теперь стоит поговорить о мелких хаках, которые можно применить к плагину. Первым делом я избавил себя от головной боли с настройкой вывода через css ссылки на все комментарии. Я вставил ее в сам плагин, вы тоже можете это сделать заменив в файле wp-commentnavi.php строчку:
127 | case 1: |
на
127 128 | case 1: wp_commentnavi_all_comments_link('Все'); |
Затем я избавился от вывода ссылок на предыдущую и следующую страницы (не заполнив эти поля в настройках плагина вы от этих ссылок все равно не избавитесь). Для этого надо удалить строчки:
139 | previous_comments_link($commentnavi_options['prev_text']); |
и
149 | next_comments_link($commentnavi_options['next_text'], $max_page); |
Следующее, что мне показалось неправильным это то, что ссылка на последнюю страницу комментариев выглядит как /name.html/comment-page-2#comments вместо того, чтобы показывать /name.html#comments. Ведь в таком случае получается, что у нас есть две абсолютно одинаковые страницы с одним и тем же контентом (даже комментарии будут такими же), но с разными ссылками. С точки зрения SEO дубликаты страниц это плохо и я слегка модифицировал плагин, чтобы избежать такой ситуации. Для этого надо заменить строку:
146 | echo '<a href="'.clean_url(get_comments_pagenum_link($i)).'" class="page" title="'.$page_text.'">'.$page_text.'</a>'; |
на строки:
146 147 148 149 150 | if ($end_page != $max_page or $i != $end_page) { echo '<a href="'.clean_url(get_comments_pagenum_link($i)).'" class="page" title="'.$page_text.'">'.$page_text.'</a>'; } if ($end_page == $max_page and $i == $end_page) { $last_page_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $commentnavi_options['last_text']); echo '<a href="'.clean_url(get_permalink()).'#comments" class="last" title="'.$last_page_text.'">'.$last_page_text.'</a>';} |
а также заменить строку:
159 | echo '<a href="'.clean_url(get_comments_pagenum_link($max_page)).'" class="last" title="'.$last_page_text.'">'.$last_page_text.'</a>'; |
на:
159 | echo '<a href="'.clean_url(get_permalink()).'#comments" class="last" title="'.$last_page_text.'">'.$last_page_text.'</a>'; |
На этом изменения плагина закончены. Но вы вовсе не обязаны что-либо менять, так как плагин будет нормально работать и без этих хаков. Изменить настройки выводимой панельки навигации можно через изменение стилей в файле commentnavi-css.css. Если кому интересно, то приведу свой стиль (посмотреть как он выглядит можно в статье WP-Cumulus):
.wp-commentnavi { padding-top: 10px; padding-bottom: 10px; } .wp-commentnavi a, .wp-commentnavi a:link, .wp-commentnavi a:visited { padding: 3px 6px 3px 6px; margin: 2px 0px 2px 0px; border-top: 1px solid black; color: #FFFFFF; background-color: #4f4f4f; font-size: 11px; font-weight: bold; text-decoration: none; } .wp-commentnavi a:hover { border-top: 1px solid black; color: #FFFFFF; background-color: black; font-weight: bold; text-decoration: underline; font-size: 11px; } .wp-commentnavi span.pages { padding: 3px 6px 3px 6px; margin: 2px 0px 2px 0px; color: #FFFFFF; border-top: 1px solid black; background-color: #4f4f4f; font-weight: bold; font-size: 11px; } .wp-commentnavi span.current { padding: 3px 6px 3px 6px; margin: 2px 0px 2px 0px; font-weight: bold; border-top: 1px solid black; color: #FFFFFF; background-color: black; font-size: 11px; } .wp-commentnavi span.extend { padding: 3px 0px 3px 0px; margin: 2px 0px 2px 0px; border-top: 1px solid black; color: #FFFFFF; background-color: #4f4f4f; font-weight: bold; font-size: 11px; } .wp-commentnavi-all-comments-link { border-right: 1px dotted black; border-left: 1px dotted black; }
Автор плагина:
Страница плагина:
Рассматриваемая версия: 1.10 от 08.06.2008
Совместимость с версией WordPress: 2.8 и выше.
Рекомендую также:

#1, 31 августа, 2009 в 22:23
класс! спасибо за подробное описание и модификацию.
кстати, рад что этот блог снова заработал! раньше он был отличным источником знаний по вордпрессу - и сейчас снова начинает быть им. спасибо!
#2, 1 сентября, 2009 в 10:57
Да уж, уважаемый! Не пропадайте! Ждем новых постов )
#3, 14 октября, 2009 в 14:18
У меня навигационная панель «прилипает» к нижней строке записи. Как её опустить вниз?
#4, 14 октября, 2009 в 14:33
поставить перед вызовом кода парочку тегов
?
#5, 14 октября, 2009 в 22:21
О! Спасибо! Помогло.
#6, 28 января, 2010 в 02:29
В общем избавился от этого только заменой плагина на версию 1.00... Конфликт видимо с Wordpress 2.9.1 =( Зато 1.00 идёт на 2.9.1 =) Может кому поможет ;-)
#7, 28 января, 2010 в 02:34
Блин фигня. С версией 1.00 не катят изменения в самом плагине, которые тут описаны =(
#8, 25 февраля, 2010 в 23:33
Поколупался, но сделал, что хотел. Содрал у тебя css! Спасибо ОГРОМАДНОЕ! Помог мне!
#9, 16 марта, 2010 в 17:43
У меня постоянно видна кнопка "Все комментарии". В comments.php вставил следующий код. Все изменения в плагине что вы написали в статье сделал.
#10, 16 марта, 2010 в 18:43
проблематично мне ответить, я не знаю в чем дело. пришлите свой исправленный файл плагина - я посмотрю лично.
#11, 19 марта, 2010 в 02:20
посмотрел и ничем помочь не могу - я вижу кнопку "Все" и никаких кнопок "Все комментарии" у меня не выводится. при ваших файлах, разумеется. посмотрите разве что в файле functions.php, где вывод комментариев происходит - может там, что прописано.
#12, 19 марта, 2010 в 10:10
Тем не менее спасибо!;)
#13, 15 апреля, 2010 в 14:28
Подскажите пожалуйста, как сделать, например как у Вас в примере, что бы комментариев было 5 или 10. А то, почему то, не разбивает на страницы. Спасибо!
#14, 16 апреля, 2010 в 08:36
Спасибо, нашел: Параметры/обсуждение... Извините за Беспокойство.
#15, 14 мая, 2010 в 17:08
Flector, подскажи, пожалуйста, одну штуковину. Проблема не у меня одного. По сети вопросов достаточно.
При установке плагина он хорошо работает, но страница поста упорно отображает ВСЕ комментарии, независимо от настроек в админке.
Бывают такие баговые темы.
Похоже, нужно что-то поменять в comments.php
Что?
#16, 10 июня, 2010 в 02:13
не отображается последняя страница в списке комментариев. Ссылка на кнопке "следущая" ведёт на #
#17, 19 июня, 2010 в 00:59
Ну вот хоть коменты можно будет упорядочить.
#18, 12 июля, 2010 в 08:21
Добрый день. Подскажите пжлст возможную причину, почему у меня совсем нет кнопки "Добавить комментарий" после постов?