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

#16, 10 июня, 2010 в 02:13
не отображается последняя страница в списке комментариев. Ссылка на кнопке "следущая" ведёт на #
#17, 19 июня, 2010 в 00:59
Ну вот хоть коменты можно будет упорядочить.
#18, 12 июля, 2010 в 08:21
Добрый день. Подскажите пжлст возможную причину, почему у меня совсем нет кнопки "Добавить комментарий" после постов?