我可以让评论只对特定用户开放吗?

时间:2013-06-26 作者:Cryptogenik

例如,我有5个用户,我想授予他们评论的权限,但没有其他人。

但每个人都需要能够阅读它们。(可公开查看)

就像一个关于一个有5名演员的节目的博客,我只希望他们能够在这个特定的页面上发表评论。这是一个自定义页面模板。

我想我可以使用这个动作钩,但我无法通过搜索找到任何示例。

768  *
769  * @param int $post_id An optional post ID to check instead of the current post.
770  * @return bool True if the comments are open
771  */
772 function comments_open( $post_id = null ) {
773 
774      $_post = get_post($post_id);
775 
776      $open = ( \'open\' == $_post->comment_status );
777      return apply_filters( \'comments_open\', $open, $post_id );
它会像这个伪代码一样简单吗?

if my_user_can_post_comments = true {
     add_filter(\'comments_open\', true, $ID);
} else {
     add_filter(\'comments_open\', false, $ID);
}

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

您可以检查用户角色。当您将代码放入调用上方的模板中时,应该可以执行此操作comments.php:

if ( current_user_can( \'actor\' ) ) // or use \'publish_posts\'
    add_filter( \'comments_open\', \'__return_true\' );

SO网友:Brooke.

如果你知道允许发表评论的用户的ID,我不明白你为什么不能这样做。

 $current_user = wp_get_current_user(); //get data of logged in user
 $user_ID = $current_user->ID; //current users id
 $allowed_users = array(3,6,9,10,33); //array of users who are allowed to comment

 if(in_array($user_ID, $allowed_users)) {
       add_filter(\'comments_open\', true, $ID);
 } else {
        add_filter(\'comments_open\', false, $ID);
 }
老实说,我不确定过滤代码本身是否可以工作。如果你提供更多的细节,也许我可以肯定地告诉你。然而,逻辑是好的,希望能让你走上正确的轨道。它基本上只使用PHP的in_array 并对照登录的用户ID检查允许ID的阵列。

您还可以包装comment_form();

结束