Получаем предопределённый набор 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.
$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; }
Не знаете, что делать с этим кодом?
Источник: Блог Миши Рудрастых