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)