通过限制评论表单的查看以编程方式阻止评论

时间:2016-07-10 作者:LPH

论坛桥插件具有以下功能:

        // Check role is_banned (int 1||0 )
    if ( $this->visitor[\'is_banned\'] === 1 ) {
        // remove capability from the user and any roles
        $user = new WP_User( $user_id );
        $user->set_role( \'subscriber\');
        $user->remove_all_caps();
        $user->remove_role( \'subscriber\' );

        if ( is_multisite() ) {
            update_user_status( $user_id, \'spam\', 1 );
        }
    }
数据库未显示wp\\U功能。不幸的是,WordPress用户仍然可以提交评论。

是否可以创建一个没有评论能力的角色?

此问题仅用于设置

How to block a someone from commenting?

我很好奇是否可以添加一个过滤器来删除任何具有特定角色的人的评论表单。换句话说,创建一个名为“禁止”的角色,如果该角色存在,则调用一个从视图中删除评论表单的函数,或创建一个名为“禁止”的用户元,设置为1,测试是否存在显示表单的标志。

有人有其他想法吗?

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

我想知道你是不是指这种方法:

add_filter( \'init\', function()
{
    $u = wp_get_current_user();

    if( $u->exists() && in_array( \'banned\', $u->roles, true ) )
        add_filter( \'comments_open\', \'__return_false\' );
} );
在这里,我们检查当前用户是否具有禁用的自定义角色。

如果是这种情况,那么我们将通过comments_open 滤器

这意味着该用户不能查看评论表单,也不能将评论直接发布到wp-comments-post.php, 因为comments_open() 检查。