让代码更简单

WordPress代码实现指定级别用户评论不用审核

重要:本文最后更新于2020-04-30 08:25:55,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

WordPress怎么实现指定级别用户评论不用审核?前两天群里有人出200元让我写这个功能,当时在忙别的事情没看到,白白错过这个简单的订单,真是肉痛。既然错过了,那也要发出来,分享精神还是要有的。下面教大家使用代码为你的主题添加指定级别用户评论不用审核的功能,举一反三,可以拓展为指定级别用户评论必须审核等等。

本文核心

  • current_user_can函数对wordpress用户角色权限的判断,在本文中用来分辨用户属于什么级别。
  • pre_comment_approved过滤器,用来过滤评论状态,用它可以让我们自定义用户的评论状态,不受后台设置限制。此过滤器更多说明请查阅:WordPress代码实现评论白名单功能

就这两个点,是不是特别简单。对于高级主题,可能会有一些自定义的用户角色,其一般通过add_role函数实现,大家可以通过搜索该函数找到你的主题中添加了哪些用户角色。

扩展:全局变量$current_user可以得到用户的角色名称。

实现代码

只有管理员才能通过审核

管理员权限可以管理后台设置,权限名称为manage_options,所以代码如下。

复制
//WordPress代码实现指定级别用户评论不用审核
//https://www.daimadog.org/6258.html
function dmd_allow_comment( $approved , $commentdata ) {
if (current_user_can ('manage_options')) {
return 1;
}else{
return 0;
}
}
add_filter( 'pre_comment_approved', 'dmd_allow_comment', 99, 2 );

指定角色可以通过审核

使用权限判断就不够准确了,这里需要使用角色名称,通过全局变量$current_user来实现。

复制
//WordPress代码实现指定级别用户评论不用审核
//https://www.daimadog.org/6258.html
function dmd_allow_comment( $approved , $commentdata ) {
global $current_user;
if( $current_user->roles[0] == 'author' ) {
return 1;
}else{
return 0;
}
}
add_filter( 'pre_comment_approved', 'dmd_allow_comment', 99, 2 );

这里是判断用户角色是author作者,自定义角色请自行测试。代码加在哪里不用我说了吧。

扩展知识

用户权限判断举例

判断用户是否为管理员(administrator)level_10 ~ level_8

复制
if ( current_user_can ( 'manage_options' ) ) {
echo 'The current user is a administrator' ;
}

判断用户是否为编辑(Editor)level_10~ level_3

复制
if ( current_user_can ( 'publish_pages' ) && ! ​​current_user_can ( 'manage_options' ) ) {
echo 'The current user is an editor' ;
}

判断用户是否为作者(Author)level_10 ~ level_2

复制
if ( current_user_can ( 'publish_posts' ) && ! ​​current_user_can ( 'publish_pages' ) ) {
echo 'The current user is an author' ;
}

判断用户是否为投稿者(Contributor)level_10 ~ level_1

复制
if ( current_user_can ( 'edit_posts' ) && ! ​​current_user_can ( 'publish_posts' ) ) { 
echo 'The current user is a contributor' ;
}

判断用户是否为订阅者(Subscriber)level_10 ~ level_0

复制
if ( current_user_can ( 'read' ) && ! ​​current_user_can ( 'edit_posts' ) ) { 
echo 'The current user is a subscriber' ; 
}

感觉很棒!可以赞赏支持我哟~

2 打赏

评论 (2)

登录后评论
小小肉疼一波,200不少
可惜了可惜了,错过200块。
QQ咨询 邮件咨询 狗哥推荐