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

Как добавить нумерацию комментариев в блог на 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.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Комментарии (всего 33 комментария)
Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


Подписаться на уведомления без комментирования.