wp_delete_comment

Definition:
function wp_delete_comment($comment_id, $force_delete = false) {}

Trashes or deletes a comment.
The comment is moved to trash instead of permanently deleted unless trash is disabled, item is already in the trash, or $force_delete is true.

Parameters

  • int $comment_id: Comment ID
  • bool $force_delete: Whether to bypass trash and force deletion. Default is false.

Return values

returns:False if delete comment query failure, true on success.

Defined actions

  • delete_comment
    do_action('delete_comment', $comment_id);
  • delete_commentmeta
    do_action( 'delete_commentmeta', $meta_ids );
  • deleted_commentmeta
    do_action( 'deleted_commentmeta', $meta_ids );
  • deleted_comment
    do_action('deleted_comment', $comment_id);
  • wp_set_comment_status
    do_action('wp_set_comment_status', $comment_id, 'delete');

Source code

function wp_delete_comment($comment_id, $force_delete = false) {

	global $wpdb;

	if (!$comment = get_comment($comment_id))

		return false;



	if ( !$force_delete && EMPTY_TRASH_DAYS && !in_array( wp_get_comment_status($comment_id), array( 'trash', 'spam' ) ) )

		return wp_trash_comment($comment_id);



	do_action('delete_comment', $comment_id);



	// Move children up a level.

	$children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment_id) );

	if ( !empty($children) ) {

		$wpdb->update($wpdb->comments, array('comment_parent' => $comment->comment_parent), array('comment_parent' => $comment_id));

		clean_comment_cache($children);

	}



	// Delete metadata

	$meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d ", $comment_id ) );

	if ( !empty($meta_ids) ) {

		do_action( 'delete_commentmeta', $meta_ids );

		$in_meta_ids = "'" . implode("', '", $meta_ids) . "'";

		$wpdb->query( "DELETE FROM $wpdb->commentmeta WHERE meta_id IN ($in_meta_ids)" );

		do_action( 'deleted_commentmeta', $meta_ids );

	}



	if ( ! $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment_id) ) )

		return false;

	do_action('deleted_comment', $comment_id);



	$post_id = $comment->comment_post_ID;

	if ( $post_id && $comment->comment_approved == 1 )

		wp_update_comment_count($post_id);



	clean_comment_cache($comment_id);



	do_action('wp_set_comment_status', $comment_id, 'delete');

	wp_transition_comment_status('delete', $comment->comment_approved, $comment);

	return true;

}

3587

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: