web-dev-qa-db-fra.com

Comment limiter l'auteur du commentaire à un commentaire par message

Existe-t-il un moyen de limiter les commentaires à un par publication en fonction du courrier électronique de l'auteur du commentaire?

Cela devrait fonctionner pour aucun utilisateur connecté.

1
DeathByDisco

Cela dépend de la façon dont votre thème gère l'enregistrement des commentaires. Par exemple, s'il soumet le formulaire via ajax, il attend certains retours.

La façon dont je m'y accrocherais serait probablement à travers le filtre pre_comment_approved. En vérifiant le courrier électronique reçu par rapport aux publications envoyées précédemment, vous renvoyez les messages non approuvés en cas d'échec.

function pre_comment_approved_handler( $approved, $commentdata ) {

    $comments =  get_comments( array(
        'post_id' => $commentdata['comment_post_ID'],
        'author_email' => $commentdata['comment_author_email']
    ) );

    if( !empty($comments) )
        $approved = 0;

    return $approved;
}
add_filter( 'pre_comment_approved' , 'preprocess_comment_handler', 10, 2 );

Non testé mais quelque chose comme ça devrait fonctionner pour le bloquer immédiatement. Gardez à l'esprit que le courrier électronique est généralement un champ facultatif.

L'ajout de commentaires de validation à l'utilisateur posera un problème lorsque les commentaires sont impliqués en tant que points d'ancrage et que le filtre n'existe pas vraiment. Le meilleur moyen serait de soumettre le formulaire via ajax et de vérifier le courrier électronique à ce moment-là. Si le message a été posté, vous pouvez créer le commentaire manuellement. De cette façon, vous aurez un contrôle total sur l'expérience utilisateur.

1
Chris Morris