WordPress Россия

Добавляем нумерацию комментариев в блог на WordPress 2.7 и выше.

Добавлено 14 января 2010 в категорию Плагины.

Как добавить нумерацию комментариев в блог на WordPress знают многие, так как различные способы описаны на многих сайтах. Однако с выходом WordPress 2.7 и с разделением комментариев на страницы ни один из этих способов больше не работает: счетчик комментариев на каждой странице комментариев начинает работать с нуля. Решение данной проблемы я нашел на одном из англоязычных форумов поддержки WordPress, его и опишу.

Прежде чем начать я должен заметить: встроить нумерацию комментариев вы можете только если используете свой собственный вывод комментариев через функцию mytheme_comment (так, как это описано в Codex‘е). Конечно, можно найти где-нибудь в недрах 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) каждый комментарий в треде тоже получит свой полноценный порядковый номер. Если вас это не устраивает и вы хотите получить что-то типа:

То вам придется использовать специальный плагин для этого, а именно Greg’s Threaded Comment Numbering.

Категории