如何让作者只对自己的帖子发表评论?

时间:2019-06-05 作者:Ramin Mahmudov

我想限制我的注册作者在其他帖子上发表评论,除了他自己的帖子。有可能吗?我不知道怎么做。可能需要条件逻辑,但如何?

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

我也在做同样的事情my website. 以下是我的做法。。。

Only post author and commentor can view each others comments

function restrict_comments( $comments , $post_id ){ 
global $post;
$user = wp_get_current_user();
if($post->post_author == $user->ID){
        return $comments;
}
foreach($comments as $comment){
    if(  $comment->user_id == $user->ID || $post->post_author == $comment->user_id  ){
        if($post->post_author == $comment->user_id){
            if($comment->comment_parent > 0){
                $parent_comm = get_comment( $comment->comment_parent );
                if( $parent_comm->user_id == $user->ID ){
                    $new_comments_array[] = $comment;       
                }
            }else{
                    $new_comments_array[] = $comment;   
            }
        }else{
            $new_comments_array[] = $comment;           
        }
    }
}
 return $new_comments_array; }

add_filter( \'comments_array\' , \'restrict_comments\' , 10, 2 );

Only allow post author to reply to a comment on their post

add_action( \'pre_comment_on_post\', \'wpq_pre_commenting\' );

function wpq_pre_commenting( $pid ) {

    $parent_id = filter_input( INPUT_POST, \'comment_parent\', FILTER_SANITIZE_NUMBER_INT );

    $post         = get_post( $pid );

    $cuid         = get_current_user_id();

    if( ! is_null( $post ) && $post->post_author == $cuid && 0 == $parent_id ) {

        wp_die( \'Sorry, you can only "Reply" to a message - click on the Reply link to send a message to the member who messaged you\' );

    }

} 
如果用户是当前帖子的作者,我还使用了一个函数来添加body类,这样我就可以设置评论表单的样式,这样帖子作者只能看到reply 注释字段。。。

add_filter(
    \'body_class\',
    function( $classes ) {
        if ( is_single() ) {
            $post = get_queried_object();
            $user = wp_get_current_user();

            if ( $user->ID == $post->post_author ) {
                $classes[] = \'post-author\';
            }
        }

        return $classes;
    }
);

css

.post-author #respond.comment-respond {display:none;}
.post-author .byuser #respond.comment-respond {display:inline;}

相关推荐

对特定用户角色隐藏Author.php模板

我有一位作家。设置用户配置文件样式的php模板(自定义角色:代理等)我有一个博客和编辑;贡献者可以发布文章。Problem当博客上的查看器单击作者链接以查看作者存档页面时,加载的页面就是作者。php模板。此模板显示代理配置文件详细信息,没有文章。这位作者。php模板与编辑器无关&;贡献者。Solution?如何排除编辑器(&A);来自加载此作者的参与者。php文件?这样,当用户访问博客文章作者链接时,会将他们带到作者存档页面,而不是代理作者。php自定义模板希望这足够清楚,谢谢你的帮助!