web-dev-qa-db-fra.com

Souligner les commentaires de tous les auteurs du site

Sur notre page WordPress, nous sommes plusieurs personnes qui écrivons des articles. Toutes ces personnes occupent des rôles d'utilisateur différents. Certains sont des éditeurs, d'autres ne sont que des auteurs et je suis l'administrateur.

Je sais que vous pouvez mettre en évidence un commentaire ou une réponse de l'auteur du message en écrivant

.commentlist .bypostauthor {
    # some styles
}

dans votre fichier CSS, mais comment puis-je modifier cela, afin que chaque commentaire ou réponse écrit par un utilisateur enregistré de l’un des rôles utilisateur suivants auteur, éditeur et administrateur soit mis en surbrillance?

Merci de m'avoir aidé :)

1
Sam

Il existe un filtre appelé comment_class pour cela:

apply_filters( 'comment_class', $classes, $class, $comment->comment_ID, $comment, $post_id );

Source

Utilisez simplement l'argument comment qui est un objet et vous obtiendrez $comment->user_id qui pourrait être utile pour obtenir le rôle d'utilisateur et ajouter vos classes.

MODIFIER:

add_filter( 'comment_class', 'wpse_253517_comment_class', 10, 5 );
function wpse_253517_comment_class( $classes, $class, $comment_ID, $comment, $post_id  ) {

    if ( 0 === (int) $comment->user_id  ) {
        return $classes;
    }

     $user_data = get_userdata( $comment->user_id );
     $role      = reset( $user_data->roles );

    switch( $role ) {
        case 'subscriber':
            $classes[] = 'is-subscriber';
        break;

        // here would be other cases, other roles     

        default:
        return $classes;
    }

    return $classes;

}
0
JMau