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 и выше.
Рекомендую также:

#31, 6 января, 2011 в 11:31
Между цифрами стоят квадратики.
#32, 6 января, 2011 в 16:12
плагин редактировали? сохранили в кодировке UTF8 без БОМ?
#33, 6 января, 2011 в 17:27
Спасибо что откликнулись, нашел проблему (заменил на новый плагин и все заработало).
Только вот как сделать чтоб навигация находилась как у вас. У меня она почему то с правой стороны.
#34, 6 января, 2011 в 17:41
отредактировать css? float: left; ?
#35, 9 февраля, 2011 в 10:25
Здравствуйте!
Не могли бы помочь?
У меня стоят древовидные комментарии плагин WordPress Thread Comment, как мне сделать постраничную навигацию по ним?
WP-CommentNavi установил но постранично не выводит , а выводит все комментарии
Заранее спасибо!
#36, 9 февраля, 2011 в 10:30
И где можно посмотреть и изменить сколько комментариев будет на одной странице?
#37, 9 апреля, 2011 в 19:03
Приветствую.
Плагин хороший, но проблема в том, что он является генератором дублей страниц, что для поисковых систем плохо.
Например у вас нет такой станицы, но она открывается
И поисковые системы по не понятным причинам находят эти страницы.
Вопрос как избавится от этого?
Если например у вас на данный момент 3 страницы с комментариями, то 4 страницы не должно быть ни по какому адресу.
Есть решение?
Спасибо.
#38, 3 мая, 2011 в 19:39
А как сделать так, чтобы к страницам комментариев добавлялась "Страница №", как у Вас на блоге сделано?
#39, 21 мая, 2011 в 02:51
Я эти строки не нашла :(
Они обязательно находятся в файле comments.php ?
Спасибо
#40, 10 сентября, 2011 в 17:26
так хочется мне этот плагин, ноя боюсь корректировать код, а без корректировки кода - есть плагин?