Le WordPress d'aujourd'hui, décodé pour les développeurs

Tips

Afficher le statut d’un signalement DSA directement sur le commentaire

Ouvrir un écran séparé pour vérifier l'état d'un signalement, pour chaque commentaire, à chaque fois : voilà ce qui use une équipe de modération.

Par Clément Hadrot • 4 septembre 2023 • 4 min de lecture • Aucun commentaire
Afficher le statut d'un signalement DSA directement sur le commentaire

Le règlement européen sur les services numériques impose depuis 2023 aux plateformes concernées un mécanisme de signalement des contenus illicites, avec traçabilité de la décision prise. Sur un site WordPress qui gère ses commentaires en interne — un forum d’entraide, une plateforme communautaire, un site d’avis — cela se traduit très concrètement par un état à suivre pour chaque commentaire signalé : en attente d’examen, examiné et maintenu, ou retiré.

Cet article ne couvre pas la construction du workflow de signalement complet, formulaire de signalement, notification à l’auteur, délais légaux de réponse : ce sont des sujets à part entière. Il se concentre sur un point précis, souvent négligé une fois le workflow en place : rendre ce statut visible là où l’équipe de modération travaille au quotidien, la liste des commentaires, sans lui imposer d’ouvrir un écran dédié pour chaque vérification.

Stocker le statut sans réinventer une table

Une extension de modération DSA mal conçue crée souvent sa propre table SQL pour stocker les signalements, ce qui complique inutilement les sauvegardes et les migrations. Un simple comment_meta suffit dans l’immense majorité des cas : WordPress expose add_comment_meta(), update_comment_meta() et get_comment_meta() exactement comme pour les articles, avec la même robustesse.

update_comment_meta( $comment_id, '_dsa_statut', 'en_attente' );
update_comment_meta( $comment_id, '_dsa_motif_signalement', 'contenu_illicite_presume' );
update_comment_meta( $comment_id, '_dsa_signale_le', current_time( 'mysql' ) );

Trois statuts suffisent généralement à couvrir le cycle de vie : en_attente, maintenu (le contenu a été examiné et jugé conforme), retire (le contenu a été retiré suite à examen). Un quatrième statut, sans_signalement, correspond à l’état par défaut de tout commentaire qui n’a jamais été signalé — inutile de le stocker explicitement, son absence de meta suffit à le représenter.

Afficher le badge dans la colonne existante

Le filtre manage_edit-comments_columns permet d’ajouter une colonne, mais dans ce cas précis, l’ajouter directement dans le contenu déjà affiché de la colonne comment via comment_text ou via une action dédiée évite de surcharger un tableau déjà dense en colonnes sur un site à fort trafic de commentaires.

L'essentiel à retenir : Stocker le statut du signalement en comment_meta, pas dans une table à part ; Afficher un badge coloré dans la colonne de la liste des commentaires ; Filtrer la liste par statut de signalement en un clic
add_filter( 'manage_comments_custom_column', function ( $column, $comment_id ) {
    if ( 'response' !== $column ) {
        return;
    }

    $statut = get_comment_meta( $comment_id, '_dsa_statut', true );
    if ( ! $statut ) {
        return;
    }

    $libelles = array(
        'en_attente' => array( 'En attente d\'examen', '#dba617' ),
        'maintenu'   => array( 'Maintenu après examen', '#00a32a' ),
        'retire'     => array( 'Retiré', '#d63638' ),
    );

    if ( isset( $libelles[ $statut ] ) ) {
        list( $texte, $couleur ) = $libelles[ $statut ];
        printf(
            '%2$s',
            esc_attr( $couleur ),
            esc_html( $texte )
        );
    }
}, 10, 2 );

Filtrer sans changer d’écran

Un lien de filtre ajouté au-dessus de la liste, via comment_status_links, permet à l’équipe de modération de basculer directement sur les seuls commentaires en attente d’examen DSA, exactement comme elle filtre déjà par « en attente » ou « spam » nativement.

add_filter( 'comment_status_links', function ( $links ) {
    global $wpdb;

    $count = $wpdb->get_var(
        "SELECT COUNT(*) FROM {$wpdb->commentmeta}
         WHERE meta_key = '_dsa_statut' AND meta_value = 'en_attente'"
    );

    if ( $count > 0 ) {
        $url = add_query_arg( 'dsa_statut', 'en_attente', admin_url( 'edit-comments.php' ) );
        $links['dsa_en_attente'] = sprintf(
            '%s (%d)',
            esc_url( $url ),
            esc_html__( 'Signalements DSA en attente', 'agence' ),
            $count
        );
    }

    return $links;
} );
  • Un badge coloré directement dans la liste plutôt qu’un écran séparé pour chaque vérification
  • Un lien de filtre au-dessus de la liste pour isoler les signalements en attente
  • Une conservation de l’historique du statut, jamais un simple écrasement, pour la traçabilité exigée par le règlement

Un statut réglementaire invisible dans l’écran de travail quotidien finit toujours par n’être consulté qu’en cas de contrôle, jamais en continu ; c’est l’inverse de l’objectif recherché.

En résumé

Rendre visible un statut de signalement DSA directement dans la liste des commentaires ne demande ni table supplémentaire ni écran dédié : un comment_meta simple, un badge affiché via manage_comments_custom_column et un lien de filtre suffisent à intégrer l’obligation réglementaire dans le flux de travail existant de l’équipe de modération, sans lui imposer un nouvel outil à apprendre.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi