comment_class()WP 2.7.0

Выводит CSS классы для помощи в оформлении комментариев.

Этот Тег шаблона преимущественно предназначен для авторов шаблонов.

Функция выводит строку: class="классы", где вместо "классы" могут быть значения: comment, even (или odd), thread-even, depth-1 и т.д., в зависимости от того, какой комментарий отображается в текущий момент. Это позволяет легко стилизовать комментарии по-разному.

Обычно функция используется так:

<li <?php comment_class() ?> id="li-comment-<?php comment_ID() ?>">

При каких условиях применяются те или иные классы:

  • comment_type ― для обычных комментариев добавляет класс comment. Для всех остальных типов в качестве класса добавляется тип комментария comment_type.

  • byuser comment-author-USER_NICENAME ― если комментарий был сделан зарегистрированным пользователем, то добавляется класс byuser и comment-author-USER_NICENAME очищается (т.е. удаляются пробелы).

  • bypostauthor ― если комментарий написан автором поста, то добавляется класс bypostauthor.

  • even/alt odd ― если номер комментария четный, добавляется класс even. В противном случае добавляется класс alt и odd.

  • depth-1 ― Всегда добавляется класс depth-COMMENT_DEPTH.

  • thread-even|thread-odd ― Если глубина комментария верхнего уровня (1), то добавляется thread-even или thread-alt thread-odd в зависимости от того, четный или нечетный комментарий.

Эта функция использует глобальные переменные, которые можно изменить заранее, чтобы воздействовать на результат функции:

$comment_alt
$comment_depth
$comment_thread_alt

Например, можно принудительно отменить alt класс у первого комментария (будет выведен класс even): $comment_alt=false;.

Работает на основе: get_comment_class()
1 раз — 0.001315 сек (очень медленно) | 50000 раз — 2.64 сек (быстро) | PHP 7.0.5, WP 4.4.2

Хуков нет.

Возвращает

null|Строку. Классы коммента при echo = false. Ничего при echo = true.

Использование

<li <?php comment_class( $class, $comment, $post_id, $echo ); ?>>
$class(строка)
Свой, произвольный класс, который нужно добавить к остальным классам.
По умолчанию: ''
$comment(число/объект)
ID или объект комментария для которого нужно вывести классы.
По умолчанию: null
$post_id(число/объект)
ID или объект поста, с которым связан комментарий, для которого нужно вывести классы.
По умолчанию: null
$echo(логический)
Выводить результат на экран (true) или возвращать для обработки (false).
По умолчанию: true

Примеры

0

#1 Предположим что функция вызывается для чётного комментария верхнего уровня:

<?php comment_class(); ?>

Выведет: class="comment even thread-even".

В реальности, функция используется внутри HTML тега (контейнера комментария):

<li <?php comment_class( $class, $comment, $post_id, $echo ); ?> id="li-comment-<?php comment_ID() ?>">
0

#2 Добавим свой класс "special" к остальным:

<?php comment_class('special'); ?>

Выведет: class="comment even thread-even special".

Список изменений

С версии 2.7.0 Введена.
С версии 4.4.0 Added the ability for $comment to also accept a WP_Comment object.

Код comment_class() WP 6.4.3

function comment_class( $css_class = '', $comment = null, $post = null, $display = true ) {
	// Separates classes with a single space, collates classes for comment DIV.
	$css_class = 'class="' . implode( ' ', get_comment_class( $css_class, $comment, $post ) ) . '"';

	if ( $display ) {
		echo $css_class;
	} else {
		return $css_class;
	}
}