wp_set_comment_status( int|WP_Comment $comment_id, string $comment_status, bool $wp_error = false )
Sets the status of a comment.
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
- $comment_id
-
(int|WP_Comment) (Required) Comment ID or WP_Comment object.
- $comment_status
-
(string) (Required) New comment status, either 'hold', 'approve', 'spam', or 'trash'.
- $wp_error
-
(bool) (Optional) Whether to return a WP_Error object if there is a failure.
Default value: false
Return
(bool|WP_Error) True on success, false or WP_Error on failure.
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'; break; case 'approve': case '1': $status = '1'; add_action( 'wp_set_comment_status', 'wp_new_comment_notify_postauthor' ); break; case 'spam': $status = 'spam'; break; case 'trash': $status = 'trash'; break; default: 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 ); } else { return false; } } clean_comment_cache( $comment_old->comment_ID ); $comment = get_comment( $comment_old->comment_ID ); /** * Fires immediately after transitioning a comment's status from one to another in the database * and removing the comment from the object cache, but prior to all status transition hooks. * * @since 1.5.0 * * @param int $comment_id Comment ID. * @param string $comment_status Current comment status. Possible values include * 'hold', '0', 'approve', '1', 'spam', and 'trash'. */ do_action( 'wp_set_comment_status', $comment->comment_ID, $comment_status ); wp_transition_comment_status( $comment_status, $comment_old->comment_approved, $comment ); wp_update_comment_count( $comment->comment_post_ID ); return true; }
Changelog
Version | Description |
---|---|
1.0.0 | Introduced. |
© 2003–2021 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wp_set_comment_status