1. 首页
  2. WordPress 函数手册

wp_set_comment_status()

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

设置注释的状态。
Sets the status of a comment.

目录锚点:#说明#参数#源码


说明(Description)

“wp_set_comment_status”操作在处理注释后调用。如果注释状态不在列表中,则返回false。


参数(Parameters)

参数 类型 说明
$comment_id (int | WP_Comment) 注释ID或WP_注释对象。
$comment_status (string) 新的评论状态,可以是“保留”、“批准”、“垃圾邮件”或“垃圾箱”。
$wp_error (bool) 如果出现故障,是否返回WP_Error对象。默认值为false。

源码(Source)

/**
 * Sets the status of a comment.
 *
 * 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.
 *
 * @since 1.0.0
 *
 * global wpdb $wpdb
 *
 * @param int $comment_id Comment ID.
 * @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'trash'.
 * @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false.
 * @return bool|WP_Error True on success, false or WP_Error on failure.
 */
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';
			if ( get_option('comments_notify') ) {
				wp_notify_postauthor( $comment_id );
			}
			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_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_id);

	$comment = get_comment($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_id, $comment_status );

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

	wp_update_comment_count($comment->comment_post_ID);

	return true;
}
更新版本 源码位置 使用 被使用
1.0.0 wp-includes/comment.php 11 9

wp_set_comment_status() 为WP2原创文章,链接:https://www.wp2.cn/functions/wp_set_comment_status/