2 Ways to Get Comment Depth

I noticed that WordPress core do not have a function to get or to print depth level of a comment. WorPress database also don’t contain any information about comment depth (only ID of a parent comment). So, is there any decision? 1. Get the comment depth by using global variables I’m sure you know about […]

#comments  /  April 13, 2015  /   2

I noticed that WordPress core do not have a function to get or to print depth level of a comment. WorPress database also don’t contain any information about comment depth (only ID of a parent comment).

So, is there any decision?

1. Get the comment depth by using global variables

I’m sure you know about wp_list_comments() function — it prints the comments on a website page.

Why this functions is cool?

  • First, this function runs a comment loop and sets global variable which contain the depth level of a current comment in the loop.
  • Second, wp_list_comments allows you to specify your own comment template by using callback parameter.
    wp_list_comments('callback=my_custom_comment_template');

    In my_custom_comment_template() global variables $comment_depth and $GLOBALS['comment_depth'] will be set.

2. Get the comment depth by comment ID

Okay, but how can I get a comment depth level, if global variable $comment_depth is unavailable? If everything we have is comment ID for example.

I think this simple function can help you with that:

function rudr_get_comment_depth( $my_comment_id ) {
	$depth_level = 0;
	while( $my_comment_id > 0  ) { // if you have ideas how we can do it without a loop, please, share it with us in comments
		$my_comment = get_comment( $my_comment_id );
		$my_comment_id = $my_comment->comment_parent;
		$depth_level++;
	}
	return $depth_level;
}

Then:

echo rudr_get_comment_depth( 784 ); // print the depth level of comment 784

Only the best of WordPress

once a week, no spam

Comments 2

  • Thank you very much!!

  • Thien NguyenFebruary 2, 2017 at 11:02

    I use recursive to get comment depth.

    function tfa_get_comment_depth( $comment_id, $depth = 0 ) {
        $comment = get_comment( $comment_id );
        if( $comment->comment_parent > 0 ) {
            $depth++;
            $depth = tfa_get_comment_depth( $comment->comment_parent, $depth );
        }
        return $depth;
    }

    Please share your thoughs via comments.

Leave your question or feedback

phpjsHTMLCSSSQLCode
Please, enter a comment
Please, enter a name
Incorrect email