comment_class( string|array $class = '', int|WP_Comment $comment = null, int|WP_Post $post_id = null, bool $echo = true )

Generates semantic classes for each comment element.



(string|array) (Optional) One or more classes to add to the class list.

Default value: ''


(int|WP_Comment) (Optional) Comment ID or WP_Comment object. Default current comment.

Default value: null


(int|WP_Post) (Optional) Post ID or WP_Post object. Default current post.

Default value: null


(bool) (Optional) Whether to echo or return the output.

Default value: true


(void|string) Void if $echo argument is true, comment classes if $echo is false.

More Information

comment_class() will apply the following classes, based on the following conditions:

  • comment_type: for normal comments, adds class “comment”. For all other types, it adds the value of the comment_type as the class
  • user_id: if the comment was made by a registered user, then adds class “byuser” and “comment-author-” + the user_nicename sanitized (i.e. spaces removed). Also, if the comment is by the original author of the post, the class “bypostauthor” is added.
  • Odd/Even: if the comment number is even, adds class “even”. Otherwise, adds class “alt” and “odd”.
  • Comment Depth: The class “depth=” + the comment depth is always added
  • Top-level Comments: If comment depth is top level (1), then adds “thread-even” or “thread-alt” and “thread-odd” depending on whether the comment number is even or odd.
  • If the optional class parameter is passed to comment_class(), then that class gets added to all the others. This is useful for defining your own custom comment class.

comment_class() uses the following global variables. So these variables can be set prior to calling comment_class() to effect the output:

  • $comment_alt
  • $comment_depth
  • $comment_thread_alt

For example, you can force $comment_alt = FALSE if you always want to start with the first comment being even. The comment_class() function will then alternate this variable for you.


File: wp-includes/comment-template.php

function comment_class( $class = '', $comment = null, $post_id = null, $echo = true ) {
	// Separates classes with a single space, collates classes for comment DIV.
	$class = 'class="' . join( ' ', get_comment_class( $class, $comment, $post_id ) ) . '"';

	if ( $echo ) {
		echo $class;
	} else {
		return $class;


Version Description
4.4.0 Added the ability for $comment to also accept a WP_Comment object.
2.7.0 Introduced.

© 2003–2019 WordPress Foundation
Licensed under the GNU GPLv2+ License.