wp_list_comments

Definition:
function wp_list_comments($args = array() {}

List comments
Used in the comments.php template to list comments for a particular post

Parameters

  • string|array $args: Formatting options
  • array $comments: Optional array of comment objects. Defaults to $wp_query->comments

Source code

function wp_list_comments($args = array(), $comments = null ) {

	global $wp_query, $comment_alt, $comment_depth, $comment_thread_alt, $overridden_cpage, $in_comment_loop;



	$in_comment_loop = true;



	$comment_alt = $comment_thread_alt = 0;

	$comment_depth = 1;



	$defaults = array('walker' => null, 'max_depth' => '', 'style' => 'ul', 'callback' => null, 'end-callback' => null, 'type' => 'all',

		'page' => '', 'per_page' => '', 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => '');



	$r = wp_parse_args( $args, $defaults );



	// Figure out what comments we'll be looping through ($_comments)

	if ( null !== $comments ) {

		$comments = (array) $comments;

		if ( empty($comments) )

			return;

		if ( 'all' != $r['type'] ) {

			$comments_by_type = &separate_comments($comments);

			if ( empty($comments_by_type[$r['type']]) )

				return;

			$_comments = $comments_by_type[$r['type']];

		} else {

			$_comments = $comments;

		}

	} else {

		if ( empty($wp_query->comments) )

			return;

		if ( 'all' != $r['type'] ) {

			if ( empty($wp_query->comments_by_type) )

				$wp_query->comments_by_type = &separate_comments($wp_query->comments);

			if ( empty($wp_query->comments_by_type[$r['type']]) )

				return;

			$_comments = $wp_query->comments_by_type[$r['type']];

		} else {

			$_comments = $wp_query->comments;

		}

	}



	if ( '' === $r['per_page'] && get_option('page_comments') )

		$r['per_page'] = get_query_var('comments_per_page');



	if ( empty($r['per_page']) ) {

		$r['per_page'] = 0;

		$r['page'] = 0;

	}



	if ( '' === $r['max_depth'] ) {

		if ( get_option('thread_comments') )

			$r['max_depth'] = get_option('thread_comments_depth');

		else

			$r['max_depth'] = -1;

	}



	if ( '' === $r['page'] ) {

		if ( empty($overridden_cpage) ) {

			$r['page'] = get_query_var('cpage');

		} else {

			$threaded = ( -1 != $r['max_depth'] );

			$r['page'] = ( 'newest' == get_option('default_comments_page') ) ? get_comment_pages_count($_comments, $r['per_page'], $threaded) : 1;

			set_query_var( 'cpage', $r['page'] );

		}

	}

	// Validation check

	$r['page'] = intval($r['page']);

	if ( 0 == $r['page'] && 0 != $r['per_page'] )

		$r['page'] = 1;



	if ( null === $r['reverse_top_level'] )

		$r['reverse_top_level'] = ( 'desc' == get_option('comment_order') );



	extract( $r, EXTR_SKIP );



	if ( empty($walker) )

		$walker = new Walker_Comment;



	$walker->paged_walk($_comments, $max_depth, $page, $per_page, $r);

	$wp_query->max_num_comment_pages = $walker->max_pages;



	$in_comment_loop = false;

}

3859

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: