Je sais que je ne peux pas garantir que les e-mails sont valides sans inscription, mais j'ai remarqué qu'un utilisateur problématique qui souhaitait troll utilisait des adresses e-mail @example.com
.
Comment puis-je maintenir une liste noire de ces domaines pour les auteurs de commentaires? Plus précisément, comment puis-je rejeter les commentaires immédiatement si un tel domaine est utilisé, en avertissant l'utilisateur en tant que tel?
Une wp_die('you must use a real email');
fera probablement l'affaire, mais quel filtre/quand faut-il vérifier?
Voici une suggestion pour un filtre:
/**
* Filters a comment's approval status before it is set.
*
* @since 2.1.0
* @since 4.9.0 Returning a WP_Error value from the filter will shortcircuit comment insertion and
* allow skipping further processing.
*
* @param bool|string|WP_Error $approved The approval status. Accepts 1, 0, 'spam' or WP_Error.
* @param array $commentdata Comment data.
*/
$approved = apply_filters( 'pre_comment_approved', $approved, $commentdata );
où nous pouvons par exemple essayez l’analyseur de domaine de messagerie de Gabriel Livan :
add_filter( 'pre_comment_approved', function( $approved, $commentdata ) {
$domain = substr( strrchr( $commentdata['comment_author_email'], '@' ), 1 );
$banned_domains = [
'example.com',
'example.org',
'example.net',
'localhost'
];
if ( in_array( $domain, $banned_domains ) ) {
wp_die( __( 'Please use a real email!' ) );
//return new WP_Error( 'comment_real_email', __( 'Please use a real email!' ) );
}
return $approved;
}, 10, 2 );
où $banned_domains
est la liste des domaines de messagerie que nous voulons arrêter avant de les enregistrer dans notre base de données.
Un autre qui se déclenche plus tôt est:
/**
* Filters a comment's data before it is sanitized and inserted into the database.
*
* @since 1.5.0
*
* @param array $commentdata Comment data.
*/
$commentdata = apply_filters( 'preprocess_comment', $commentdata );