Come creare una Denylist globale

Panoramica

Siete interessati a creare una denylist globale a livello di dominio che si applichi a tutti i vostri moduli? La creazione di un elenco di questo tipo garantirà che tutte le e-mail di spam precedentemente segnalate siano universalmente bloccate in tutti i vostri WPForm attraverso una singola funzione unificata.

Per impostazione predefinita, utilizzando le liste Allowlist o Denylist è possibile bloccare facilmente i domini per ciascun modulo utilizzando *@bad-domain.com. Per saperne di più sull'impostazione di una Allowlist o di una Denylist, consultate questa utile guida.

Tuttavia, lo scopo principale di questo tutorial è quello di creare un elenco globale, eliminando la necessità di modifiche individuali in ogni modulo. Sfruttando le capacità di PHP, la costruzione di un tale elenco diventa un processo semplice e veloce, come dimostreremo in questo tutorial!

Aggiunta dello snippet

Ora è il momento di aggiungere lo snippet al nostro sito e di personalizzare l'elenco dei nomi di dominio che vogliamo bloccare. È sufficiente copiare e incollare questo snippet sul vostro sito.

Per assistenza su come e dove aggiungere gli snippet al vostro sito, consultate questo tutorial.

/*
 * Global denylist for domains on all WPForms.
 *
 * @link https://wpforms.com/developers/how-to-create-a-global-denylist/
*/
 
function wpf_dev_blacklist_global_domains( $field_id, $field_submit, $form_data ) {
 
    // Find the domain name, anything after the @ symbol
    $domain          = substr( strrchr( $field_submit, "@" ), 1 );
 
    // Add the domains here, separated by commas
    $blacklist       = array( 'deny.com', 'nope.com' );
 
    // Customize the error message that will be shown 
    if( in_array( $domain, $blacklist ) ) { 
        wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'We apologize, this domain is not accepted.', 'wpforms' );
        return;
    }
}
add_action('wpforms_process_validate_email', 'wpf_dev_blacklist_global_domains', 10, 3 );

Questo snippet esaminerà il nome di dominio inserito nel campo e-mail e lo confronterà con l'elenco globale costruito in questo snippet. I nomi di dominio possono essere elencati nel formato [email protected]. Ma ogni dominio è elencato con virgolette singole e poi separato da una virgola.

Quando un utente cerca di inserire quel dominio e invia il modulo, vedrà l'errore.

Utilizzando questo snippet è possibile creare facilmente un elenco globale di denylist

Ed ecco fatto! Avete creato con successo una denylist globale per tutti i vostri WPForm. Volete bloccare anche le bestemmie nei vostri moduli? Date un'occhiata al nostro tutorial su Come bloccare l'invio di moduli contenenti profanità.

Riferimento azione: wpforms_process_validate_email