Добавляем нумерацию комментариев в WordPress 2.7
Как добавить нумерацию комментариев в блог на WordPress знают многие, так как различные способы описаны на многих сайтах. Однако с выходом WordPress 2.7 и с разделением комментариев на страницы ни один из этих способов больше не работает: счетчик комментариев на каждой странице комментариев начинает работать с нуля. Решение данной проблемы я нашел на одном из англоязычных форумов поддержки WordPress, его и опишу.
Прежде чем начать я должен заметить: встроить нумерацию комментариев вы можете только если используете свой собственный вывод комментариев через функцию mytheme_comment (так, как это описано в
Сначала метод встройки нумерации, если у вас комментарии не разделяются на страницы: открываем файл 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) каждый комментарий в треде тоже получит свой полноценный порядковый номер. Если вас это не устраивает и вы хотите получить что-то типа:
То вам придется использовать специальный плагин для этого, а именно
Понравился пост? Подпишись на обновления по RSS или Twitter !
#21,
Хотя посту уже пара лет, именно он помог мне справиться с нумерацией каментов: огромное Вам спасибо!!! А то ж я никак не могла понять последовательность действий)
Возник вопрос: как сделать номер полноценной ссылкой на камент вида хттп://урл.поста/#comment-1234? Ну, чтобы юзер мог сослаться на него, если захочет..
Хелп?..
#22,
Присоединяюсь к вопросу :) Гугл что-то молчит на эту тему :(
#23,
ну так в статье то практически написано про это:
проявите немножко фантазии :)
#24,
да уже пробовал, только вышло немного по другому :)
Без якоря же не будет к комменту переходить ?
#25,
да почти тоже самое - у вас "ссылка", у меня "#номер_коммента". то есть разные анкоры, а по сути одно и то же.
#26,
ссылка у меня вообще-то на дату коммента завязана, я не стал приводить полный вариант...
#27,
я это понял, никто же не оставит "ссылку" в качестве рабочего варианта :) а так анкором делают номер коммента, время коммента, имя комментатора и много других вариантов. кому что удобнее в шаблоне.
#28,
Вот эта штука обязательна в ссылке, или как-то всё проще можно сделать ? Без неё переход я не смог сделать :) Что-то я не понимаю :(
#29,
комментариев на странице много, единственный способ обратиться к нужному комменту это указать его ID. поэтому это обязательно.
#30,
Спасибо за статью! А как прописать стили для цифр в нумерации комментариев? Весь интернет перерыл - 0. Может вы подскажете?
#31,
может и подскажу.
применительно к какой ситуации вам прописывать надо?
в каждом шаблоне по-разному может быть.
#32,
Я гляжу, у вас нумерация идет правильно. А у меня при добавлении вышеописанного кода нумерация идет в обратном порядке, то бишь последний комментарий выводится, как первый. Но, возможно, это из-за того, что у меня более новые комментарии отображаются сверху, а не снизу, как у вас.
Можно ли как-то исправить нумерацию для моего варианта?
#33,
теоретически.
в comments.php до вызова функции wp_list_comments надо вставить код:
а в функции вывода комментариев так:
работать будет.
но этот код не будет учитывать разбитие на страницы и трекбэки и обратными ссылками.