wp_set_comment_status( int|WP_Comment $comment_id, string $comment_status, bool $wp_error = false )

Sets the status of a comment.

Description Description

The ‘wp_set_comment_status’ action is called after the comment is handled. If the comment status is not in the list, then false is returned.

Parameters Parameters


(int|WP_Comment) (Required) Comment ID or WP_Comment object.


(string) (Required) New comment status, either 'hold', 'approve', 'spam', or 'trash'.


(bool) (Optional) Whether to return a WP_Error object if there is a failure. Default is false.

Default value: false

Top ↑

Return Return

(bool|WP_Error) True on success, false or WP_Error on failure.

Top ↑

Source Source

File: wp-includes/comment.php

function wp_set_comment_status($comment_id, $comment_status, $wp_error = false) {
	global $wpdb;

	switch ( $comment_status ) {
		case 'hold':
		case '0':
			$status = '0';
		case 'approve':
		case '1':
			$status = '1';
			add_action( 'wp_set_comment_status', 'wp_new_comment_notify_postauthor' );
		case 'spam':
			$status = 'spam';
		case 'trash':
			$status = 'trash';
			return false;

	$comment_old = clone get_comment($comment_id);

	if ( !$wpdb->update( $wpdb->comments, array('comment_approved' => $status), array( 'comment_ID' => $comment_old->comment_ID ) ) ) {
		if ( $wp_error )
			return new WP_Error('db_update_error', __('Could not update comment status'), $wpdb->last_error);
			return false;

	clean_comment_cache( $comment_old->comment_ID );

	$comment = get_comment( $comment_old->comment_ID );

	 * Fires immediately before transitioning a comment's status from one to another
	 * in the database.
	 * @since 1.5.0
	 * @param int         $comment_id     Comment ID.
	 * @param string|bool $comment_status Current comment status. Possible values include
	 *                                    'hold', 'approve', 'spam', 'trash', or false.
	do_action( 'wp_set_comment_status', $comment->comment_ID, $comment_status );

	wp_transition_comment_status($comment_status, $comment_old->comment_approved, $comment);


	return true;

Top ↑

Changelog Changelog

Version Description
1.0.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.