WordPress 的【评论】都有哪些状态与 wp_set_comment_status 设置评论状态函数

追格官方小助手/ 2022年12月21日/ WordPress/ 浏览 981

在开发 WordPress 主题和 WordPress 插件时,总是免不了和文章评论打交道。这两天就遇到一个需求【在小程序里审核管理文章评论】,无疑这就涉及到如何修改评论的状态了。


从 WordPress 的官方文档,找到了修改评论状态的函数:wp_set_comment_status 


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


函数命名很清晰,基本一看就知道怎么用了。现在只需要搞清楚 $comment_status 有哪些合规的值就可以了。根据 WordPress 文档,评论状态可以是: 'hold', 'approve', 'spam', or 'trash'。


一个疑问出现了,之前在学习 《WordPress 用户评论审核通过,发个通知给用户》 和 《WordPress钩子:监听评论状态变化 transition_comment_status》时,大概了解过评论的状态有 unapproved,approved,spam,trash 四种。怎么两个地方对不上啊?


干脆做个实验,在 WordPress 后台,把一个评论依次设置为 'hold', 'approve', 'spam', or 'trash' ,使用 transition_comment_status 观察评论状态的变化,以及数据库中值得变化。




最终,得出的结论是:


【wp_set_comment_status 函数参数中的 'hold' 】等于【评论相关钩子中的 unapproved】等于【数据库中的'0'】,均表示评论【待审】。


【wp_set_comment_status 函数参数中的 'approve' 】等于【评论相关钩子中的 approved】等于【数据库中的'1'】,均表示评论【已批准】。


'spam' 在三个地方一致,表示评论被标记为【垃圾】。


'trash' 在三个地方一致,表示评论已被放到【回收站】中。


我们再看一下,wp_set_comment_status 函数的源码:


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;
	}

	......

	return true;
}


原来,在函数内部偷偷作了转化……


这种不一致,虽然无伤大雅,但是在 WordPress 这么声名显赫的系统中出现,也着实让人有点惊喜。


发表评论

暂无评论,抢个沙发...

客服 工单