get_comment_class()

Получаем предопределённый набор CSS-классов для комментария в виде массива.

Каждый CSS-класс будет автоматически очищен функцией esc_attr().

get_comment_class( $class = '', $comment_id = null, $post_id = null )

Параметры

$class
(строка|массив) Один или несколько дополнительных CSS-классов, которые хотите добавить в общий список. Можно разделять пробелами или передать в виде массива.
$comment_id
(целое|WP_Comment) ID или объект комментария, классы которого нужно получить. По умолчанию – текущий комментарий в цикле.
$post_id
(целое число|WP_Post) Чтобы определять, что комментарий оставлен автором данного поста. По умолчанию – текущий пост.

Добавляемые CSS-классы

CSS-классОписание
commentНазвание типа комментария.
byuserЕсли комментарий оставлен зарегистрированным пользователем.
comment-author-{логин}Тоже для комментариев, оставленных пользователями. О том, как скрыть логин отсюда, рассказывал тут.
bypostauthorЕсли это комментарий автора поста, к которому оставлен комментарий.
odd и altЕсли комментарий – чётный по списку.
evenЕсли комментарий – нечётный по списку.
thread-odd и thread-altЕсли родительский комментарий (ветка) – чётный по списку.
thread-evenЕсли родительский комментарий (ветка) – нечётный по списку.
depth-{уровень вложенности}Уровень вложенности комментария.

Пример

В качестве примере давайте попробуем получить CSS-классы стандартного комментария в WordPress.

стандартный комментарий в WordPress
$css_classes = get_comment_class( 'true-class-1 true-class-2', 1 );
print_r( $css_classes );
 
/*
Array
(
    [0] => comment
    [1] => even
    [2] => thread-even
    [3] => depth-1
    [4] => true-class-1
    [5] => true-class-2
)
*/
 
// можем кстати объединить их в строку и вывести
echo join( ' ', $css_classes );
// comment even thread-even depth-1 true-class-1 true-class-2

В реальности эта функция не так часто используется, гораздо чаще мы встречаем comment_class(), которая уже сразу же выводит эти CSS-классы в шаблоне темы.

Хуки

comment_class

При помощи этого хука мы можем например автоматически добавить, или удалить какой-то определённый CSS-класс, и сделать это, даже без изменений в файлах темы.

Например написать плагин, который будет добавлять класс true-class к комментариям и удалять класс, содержащий логин пользователя:

/*
 * Plugin name: Плагин, меняющий CSS-классы комментов
 * Author: Миша Рудрастых
 * Version: 1.0
 */
 
add_filter( 'comment_class', 'true_change_css_classes_in_comment', 25, 5 );
 
function true_change_css_classes_in_comment( $classes, $class, $comment->comment_ID, $comment, $post_id ) {
	// удаляем классы
	foreach( $classes as $key => $class ) {
		if( strstr( $class, "comment-author-" ) ) {
			unset( $classes[$key] );
		}
	}
	// добавляем класс
	$classes[] = 'true-class';
	// возвращаем результат
	return $classes;
}

Не знаете, что делать с этим кодом?

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.