get_comment_class() WordPress Function
The get_comment_class() function is used to retrieve the class attribute for a given comment. This function is useful for displaying different CSS class names for different comments, depending on their status or type. For example, you could use this function to display a "pending" class for comments that are awaiting moderation, or a "featured" class for comments that have been marked as featured.
get_comment_class( string|string[] $css_class = '', int|WP_Comment $comment_id = null, int|WP_Post $post_id = null ) #
Returns the classes for the comment div as an array.
Parameters
- $css_class
(string|string[])(Optional) One or more classes to add to the class list.
Default value: ''
- $comment_id
(int|WP_Comment)(Optional)Comment ID or WP_Comment object. Default current comment.
Default value: null
- $post_id
(int|WP_Post)(Optional)Post ID or WP_Post object. Default current post.
Default value: null
Return
(string[]) An array of classes.
Source
File: wp-includes/comment-template.php
function get_comment_class( $css_class = '', $comment_id = null, $post_id = 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_id ); 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_id The post ID or WP_Post object. */ return apply_filters( 'comment_class', $classes, $css_class, $comment->comment_ID, $comment, $post_id ); }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
4.4.0 | Added the ability for $comment_id to also accept a WP_Comment object. |
2.7.0 | Introduced. |