comment_class()
Выводит 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;
.
Хуков нет.
Возвращает
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
Примеры
#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() ?>">
#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() comment class WP 6.7.2
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; } }