在开发 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 这么声名显赫的系统中出现,也着实让人有点惊喜。
-
WordPress导航主题之追格小站点评主题:广告位设置教程WordPress导航主题之追格小站点评主题在2023.11.2更新了一版本V1.4.0,新增了一些图片/联盟广告位功能,今天我们简单说说如何设置。
-
WordPress REST 关键概念:Routes & EndpointsWordPress REST 关键概念:Routes & Endpoints
-
WordPress REST 关键概念:Requests & ResponsesWordPress REST 关键概念:Requests & Responses
-
WordPress REST 关键概念:Schema & Controller ClassesWordPress REST 关键概念:Schema & Controller Classes
-
WordPress 6.4.1 及新的默认主题 Twenty Twenty-Four 发布WordPress 6.4.1 及新的默认主题 Twenty Twenty-Four 发布
-
追格企业官网小程序(开源版)首页弹窗广告设置方法追格资讯小程序(开源版)又称酱茄free,实现WordPress网站数据与小程序同步共享,简单的配置就能搭建自己的资讯/博客小程序。一套代码多端适用(微信端、百度端、QQ端、H5端)。
暂无评论,抢个沙发...