web-dev-qa-db-fra.com

Bloquez les commentaires par programme en restreignant l'affichage du formulaire de commentaire

Un plugin forum bridge a les caractéristiques suivantes:

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

La base de données ne montre pas wp_capabilities. Malheureusement, l'utilisateur WordPress peut toujours soumettre des commentaires.

Est-il possible de créer un rôle sans commenter les capacités?

Cette question est uniquement pour les paramètres

Comment empêcher quelqu'un de commenter?

Je suis curieux de savoir si un filtre pourrait être ajouté pour supprimer le formulaire de commentaire de toute personne ayant un rôle particulier. En d’autres termes, créez un rôle appelé "banni" et si ce rôle est présent, appelez une fonction qui supprime le formulaire de commentaire de la vue OR créez une méta utilisateur appelée banni, définie sur 1, teste la présence de drapeau pour montrer la forme.

Quelqu'un a-t-il d'autres idées?

3
LPH

Je me demande si vous voulez dire ce genre d'approche:

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

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

où nous vérifions si l'utilisateur actuel a le rôle personnalisé banni .

Si tel est le cas, nous forçons tous les commentaires à être fermés via le filtre comments_open.

Cela signifie que cet utilisateur ne devrait pas pouvoir voir le formulaire de commentaire ou publier un commentaire directement dans wp-comments-post.php, en raison des vérifications comments_open().

3
birgire