get_comment_class() │ WP 2.7.0
Returns the classes for the comment div as an array.
1 time — 0.001342 sec (very slow) | 50000 times — 2.83 sec (fast) | PHP 7.0.5, WP 4.4.2
Return
String[]
. An array of classes.
Usage
get_comment_class( $css_class, $comment_id, $post );
- $css_class(string|string[])
- One or more classes to add to the class list.
Default: ''
- $comment_id(int|WP_Comment)
- Comment ID or WP_Comment object.
Default: current comment
- $post(int|WP_Post)
- Post ID or WP_Post object.
Default: current post
Examples
#1 Get the comment css classes as an array
$arr = get_comment_class( 'myclass', 123, 2 );
print_r( $arr );
/*
Array
(
[0] => comment
[1] => byuser
[2] => comment-author-kama
[3] => even
[4] => thread-even
[5] => depth-1
[6] => myclass
)
*/
To get array as a string, you can join array of classes:
echo implode( ' ', $arr );
// result: comment byuser comment-author-kama even thread-even depth-1 myclass
Notes
- Global. Int. $comment_alt
- Global. Int. $comment_depth
- Global. Int. $comment_thread_alt
Changelog
Since 2.7.0 |
Introduced. |
Since 4.4.0 |
Added the ability for $comment_id to also accept a WP_Comment object. |
get_comment_class() get comment class code
WP 6.8
function get_comment_class( $css_class = '', $comment_id = null, $post = null ) {
global $comment_alt, $comment_depth, $comment_thread_alt;
$classes = array();
$comment = get_comment( $comment_id );
if ( ! $comment ) {
return $classes;
}
// Get the comment type (comment, trackback).
$classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;
// Add classes for comment authors that are registered users.
$user = $comment->user_id ? get_userdata( $comment->user_id ) : false;
if ( $user ) {
$classes[] = 'byuser';
$classes[] = 'comment-author-' . sanitize_html_class( $user->user_nicename, $comment->user_id );
// For comment authors who are the author of the post.
$_post = get_post( $post );
if ( $_post ) {
if ( $comment->user_id === $_post->post_author ) {
$classes[] = 'bypostauthor';
}
}
}
if ( empty( $comment_alt ) ) {
$comment_alt = 0;
}
if ( empty( $comment_depth ) ) {
$comment_depth = 1;
}
if ( empty( $comment_thread_alt ) ) {
$comment_thread_alt = 0;
}
if ( $comment_alt % 2 ) {
$classes[] = 'odd';
$classes[] = 'alt';
} else {
$classes[] = 'even';
}
++$comment_alt;
// Alt for top-level comments.
if ( 1 === $comment_depth ) {
if ( $comment_thread_alt % 2 ) {
$classes[] = 'thread-odd';
$classes[] = 'thread-alt';
} else {
$classes[] = 'thread-even';
}
++$comment_thread_alt;
}
$classes[] = "depth-$comment_depth";
if ( ! empty( $css_class ) ) {
if ( ! is_array( $css_class ) ) {
$css_class = preg_split( '#\s+#', $css_class );
}
$classes = array_merge( $classes, $css_class );
}
$classes = array_map( 'esc_attr', $classes );
/**
* Filters the returned CSS classes for the current comment.
*
* @since 2.7.0
*
* @param string[] $classes An array of comment classes.
* @param string[] $css_class An array of additional classes added to the list.
* @param string $comment_id The comment ID as a numeric string.
* @param WP_Comment $comment The comment object.
* @param int|WP_Post $post The post ID or WP_Post object.
*/
return apply_filters( 'comment_class', $classes, $css_class, $comment->comment_ID, $comment, $post );
}
Related Functions