仅允许帖子作者和高级角色用户发表评论

时间:2017-11-29 作者:Chazlie

有没有办法让每个人都能看到评论,但只有帖子作者或属于高级角色的人才能发表评论?

我可以这样做吗

        global $current_user;
        get_currentuserinfo();

        if (is_user_logged_in() && $current_user->ID == $post->post_author)  {  comment_form();  
    } else {
     if(  $current_user->roles[0] == \'admin\' || $current_user->roles[0] == \'premium\' )
{ comment_form(); } endif;

     else {
        echo \'<h4>You are not allowed to post comments.</h4>\';
    }
对不起,我应该说,有两个角色,基本和高级。两者都可以发表文章。但只有premium可以对任何人的帖子发表评论,Basic只能对自己的帖子发表评论

3 个回复
SO网友:Daniel Fonda

好消息,坏消息。。

Good news其背后的逻辑非常简单。基本上,将表单封装在一个简单的if语句中。

    if(condition){ 
      /*Your form here*/
    } 
    else {echo \'<h4>You need to be a premium account to post comments</h4>\';}
Bad News您需要在另一个用户角色中编码。这通常可以通过插件完成。大多数插件提供关于如何检查用户的用户角色的文档。

如果插件有如下功能

get_user_role();
你只要把它作为你的条件。看起来像这样:

  if(get_user_role() == \'premium\'){ 
      /*Your form here*/
    } 
  else {echo \'<h4>You need to be a premium account to post comments</h4>\';}

SO网友:Tim Hallman

在您的评论中。php模板替换comment_form() 使用此选项:

if (current_user_can(\'manage_options\') and current_user_can(\'Premium\') {
   comment_form();   
}

SO网友:Elyes At.

更换comment_form() 在里面comments.php 使用此代码的文件:

$user = wp_get_current_user();
if(  $user->roles[0] == \'admin\' || $user->roles[0] == \'premium\' ){
    // show comment form
    comment_form();  
} else {
    echo \'<h4>You are not allowed to post comments.</h4>\';
}

结束