Добавляем нумерацию комментариев в WordPress 2.7
Как добавить нумерацию комментариев в блог на WordPress знают многие, так как различные способы описаны на многих сайтах. Однако с выходом WordPress 2.7 и с разделением комментариев на страницы ни один из этих способов больше не работает: счетчик комментариев на каждой странице комментариев начинает работать с нуля. Решение данной проблемы я нашел на одном из англоязычных форумов поддержки WordPress, его и опишу.
Прежде чем начать я должен заметить: встроить нумерацию комментариев вы можете только если используете свой собственный вывод комментариев через функцию mytheme_comment (так, как это описано в 'е). Конечно, можно найти где-нибудь в недрах WordPress внутренности функции wp_list_comments и там их исправить так, чтобы нумерация работала, но это не слишком удобный и правильный способ.
Сначала метод встройки нумерации, если у вас комментарии не разделяются на страницы: открываем файл functions.php вашего шаблона и ищем функцию mytheme_comment (название может быть другим, смотрите какая функция вызывается через wp_list_comments в comments.php вашего шаблона) и вставляем в самое начало этой функции код:
#Comment counter global $comment_num; if(isset($comment_num)) { $comment_num++; } else { $comment_num = 1; }
А в том месте, где нужно вывести номер текущего комментария вставьте:
<?php echo $comment_num; ?>
И если вы не используете разделение комментариев на страницы или у вас еще недостаточно комментариев, чтобы они начали разбиваться на страницы, то у каждого комментария (и трекбека если вы их выводите) появится циферка с номером комментария. Однако такой способ не будет работать при разделении комментариев на страницы, чтобы это исправить надо модифицировать вставляемый код, в функции mytheme_comment вставляем в самое начало:
#Get the current comment page and calculate preceeding comments if ( '' === $args['per_page'] && get_option('page_comments') ) $args['per_page'] = get_option('comments_per_page'); if ( empty($args['per_page']) ) { $args['per_page'] = 0; $args['page'] = 0; } if ( $args['per_page'] ) { if ( '' == $args['page'] ) $args['page'] = get_query_var('cpage'); } $ccomp = ($args['page']-1) * $args['per_page'] ; #Comment counter global $comment_num; if(isset($comment_num)) { $comment_num++; } else { $comment_num = 1; }
А для вывода номера комментария используем код:
<?php echo $comment_num + $ccomp; ?>
Теперь правильные номера комментариев будут показываться и в случае разделения комментариев на страницы. Надо заметить, что при использовании древовидных комментариев (еще одно нововведение версии 2.7) каждый комментарий в треде тоже получит свой полноценный порядковый номер. Если вас это не устраивает и вы хотите получить что-то типа:

То вам придется использовать специальный плагин для этого, а именно .
Рекомендую также:

#16, 6 октября, 2010 в 09:17
Отлично все реализовал спасибо за изложение кода, вот тока как бы еще посты пронумеровать очень нужно, помогите плеас, никто не знает?
#17, 17 октября, 2010 в 11:48
да, на 3.0.1 работает. в новой версии wp система комментариев не менялась никак.
#18, 11 ноября, 2010 в 04:40
Спасибо за подробные пояснения. Благодаря вам работа с WP удобна и проста.
#19, 11 ноября, 2010 в 18:45
Теперь удобней распозновать комменты...
#20, 20 марта, 2011 в 18:59
Помогите пожалуйста, на моём блоге () плагин WordPress Thread Comment не работает, выдаёт ошибку: "Can't find the 'commentformid' div". Как её решить? Или может есть какая-нибудь другая замена плагина древовидных комментариев?
#21, 5 января, 2012 в 06:47
Хотя посту уже пара лет, именно он помог мне справиться с нумерацией каментов: огромное Вам спасибо!!! А то ж я никак не могла понять последовательность действий)
Возник вопрос: как сделать номер полноценной ссылкой на камент вида хттп://урл.поста/#comment-1234? Ну, чтобы юзер мог сослаться на него, если захочет..
Хелп?..