Programaticamente bloqueia os comentários restringindo a visualização do formulário de comentários

4

Um plug-in de ponte do fórum tem o seguinte:

        // 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 );
        }
    }

O banco de dados não mostra nenhum wp_capabilities. Infelizmente, o usuário do WordPress ainda pode enviar comentários.

É possível criar um papel sem habilidades de comentário?

Esta questão é apenas para configurações

Como bloquear alguém de comentar?

Estou curioso para saber se um filtro pode ser adicionado para remover o formulário de comentários de qualquer pessoa com uma função específica. Em outras palavras, crie uma função chamada 'banned' e, se essa função estiver presente, chame uma função que remove o formulário de comentário da view OU crie uma meta de usuário chamada banned, defina como 1, teste a presença de sinalizador para mostrar o formulário. / p>

Alguém tem alguma outra ideia?

    
por LPH 10.07.2016 / 20:05

1 resposta

3

Gostaria de saber se você está falando desse tipo de abordagem:

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

    if( $u->exists() && in_array( 'banned', $u->roles, true ) )
        add_filter( 'comments_open', '__return_false' );
} );

onde verificamos se o usuário atual tem a função banida personalizada.

Se for esse o caso, forçamos todos os comentários a serem fechados por meio do filtro comments_open .

Isso significa que esse usuário não poderá ver o formulário de comentários nem postar um comentário diretamente em wp-comments-post.php , devido às verificações de comments_open() .

    
por birgire 11.07.2016 / 02:46