Siete interessati a migliorare la sicurezza dei vostri moduli web? Con un semplice snippet PHP, potete bloccare efficacemente gli invii da domini specifici direttamente nel campo di testo del vostro modulo. In questo tutorial vi guideremo passo dopo passo nell'implementazione di questa funzione, assicurandovi che i vostri moduli rimangano protetti da spam e invii dannosi.
Creazione del modulo
Inizieremo creando un nuovo modulo. Il nostro modulo è un semplice modulo di contatto in cui chiederemo ai clienti di lasciare il loro nome, l'e-mail e qualsiasi altro commento che desiderino aggiungere.
Per il nostro modulo di esempio, aggiungeremo i campi Nome, Email, Testo del paragrafo e Captcha personalizzato (per una maggiore sicurezza).

Se avete bisogno di assistenza, consultate la nostra utile guida su come creare un nuovo modulo.
Blocco dei domini
Ora è il momento di aggiungere i nostri snippet. Per assistenza su come e dove aggiungere gli snippet, consultare questo tutorial.
Campo di testo del paragrafo
/**
* Block domains inside the Paragraph Text
*
* @link https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
*/
function wpf_dev_prevent_domains_textarea( $field_id, $field_submit, $form_data ) {
if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
}
}
add_action( 'wpforms_process_validate_textarea' , 'wpf_dev_prevent_domains_textarea', 10, 3 );
Questo frammento guarderà all'interno della cartella Testo del paragrafo per qualsiasi combinazione delle parole mostrate all'interno del campo del modulo preg_match
e bloccare l'invio del modulo se vero.

Campo di testo a riga singola
È possibile utilizzare la stessa funzionalità anche per il campo Testo a riga singola. Lo snippet sarà quasi identico, a eccezione del nome del filtro.
/**
* Block domains inside the Single Line Text
*
* @link https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
*/
function wpf_dev_prevent_domains_text( $field_id, $field_submit, $form_data ) {
if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
}
}
add_action( 'wpforms_process_validate_text' , 'wpf_dev_prevent_domains_text', 10, 3 );
E questo è tutto ciò di cui avete bisogno! Volete bloccare anche le bestemmie in questi campi? Consultate il nostro tutorial su Come bloccare gli invii di moduli contenenti parolacce.
Azioni di riferimento
FAQ
D: Posso utilizzarlo nel campo del modulo Rich Text?
R: Assolutamente sì! Ecco lo snippet per il campo del modulo Rich Text.
/**
* Block domains inside the Rich Text
*
* @link https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
*/
function wpf_dev_prevent_domains_richtext( $field_id, $field_submit, $form_data ) {
if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
}
}
add_action( 'wpforms_process_validate_richtext' , 'wpf_dev_prevent_domains_richtext', 10, 3 );
D: Come posso applicare questo metodo ad altri campi?
A: Quasi tutti i campi hanno un qualche tipo di convalida. La maggior parte dei campi utilizzerà do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data )
. Basta sostituire _{$field_type}
con il tipo di campo.