<html lang="it-it" dir="ltr"><head></head><body>### [Come aggiungere la convalida del campo CAP ai tuoi moduli](https://wpforms.com/developers/how-to-add-zip-code-field-validation-on-your-forms/)

**Pubblicato:** 26 giugno 2023
**Autore:** Umair Majeed

**Estratto:** Questo tutorial ti guiderà su come aggiungere la convalida del campo CAP ai tuoi WPForms utilizzando un piccolo snippet PHP. 

**Contenuto:**

Vuoi aggiungere la convalida del campo CAP ai tuoi WPForms? Per impostazione predefinita, quando si utilizza il campo **Indirizzo**, c'è solo uno spazio per inserire un CAP insieme all'indirizzo. Tuttavia, in questo tutorial, ti mostreremo come creare un campo che cercherà i tuoi CAP di servizio e fallirà al momento dell'invio del modulo se il CAP non rientra nella tua area di servizio preferita.

## Creazione del Modulo

Inizieremo creando un nuovo modulo e aggiungendo tutti i campi richiesti.

![inizia creando un nuovo modulo e aggiungendo i tuoi campi. assicurati di includere almeno 1 campo di testo a riga singola per la convalida del tuo campo CAP](https://wpforms.com/wp-content/uploads/2023/06/wpforms-validate-zipcode-create-form.jpg)Aggiungeremo un campo modulo **Testo a riga singola** che avrà una maschera di input che fungerà da campo **CAP**. Ciò consentirà, al momento dell'invio del modulo, allo snippet di prendere il valore inserito in questo campo e confrontarlo con un elenco di CAP che si trovano nella nostra area di servizio. Se fallisce, l'utente vedrà un messaggio che indica che al momento non serviamo quell'area.

Se hai bisogno di aiuto nella creazione di moduli, [dai un'occhiata a questa utile guida](https://wpforms.com/docs/creating-first-form/ "Creazione del tuo primo modulo").

## Utilizzo della Maschera di Input

Dato che vogliamo che il nostro campo modulo **Testo a riga singola** appaia come un normale campo CAP, aggiungeremo una maschera di input a questo campo. Per ottenere ciò, fai clic sul campo e vai alla scheda **Avanzate**. All'interno del campo **Maschera di input**, inserisci **99999**. Ciò significa che questo particolare campo accetterà solo 5 cifre numeriche.

Per ulteriori informazioni sulle maschere di input in WPForms, [rivedi questo tutorial per altri esempi](https://wpforms.com/docs/how-to-use-custom-input-masks/ "Utilizzo di maschere di input personalizzate").

![sul tuo campo modulo di testo a riga singola, fai clic sulla scheda Avanzate e inserisci 99999 per creare il formato del campo CAP. questa maschera di input accetterà solo 5 cifre numeriche.](https://wpforms.com/wp-content/uploads/2023/06/wpforms-validate-zipcode-add-input-mask.jpg)## Applicazione della Convalida del CAP (su un singolo modulo)

&gt; Ora è il momento di aggiungere il nostro snippet. Questo primo esempio aggiungerà la convalida del CAP a un solo modulo specifico. Se hai bisogno di assistenza su come e dove aggiungere snippet, [rivedi questa documentazione](https://wpforms.com/developers/how-to-add-custom-php-or-javascript-for-wpforms/ "Come aggiungere PHP o JavaScript personalizzato per WPForms").

```

/**
* Aggiunge la convalida del campo CAP.
*
* @link https://wpforms.com/developers/how-to-add-zip-code-field-validation-on-your-forms/
*/
 
function wpf_dev_validate_zip_code( $fields, $entry, $form_data ) {
 
    // Opzionale, puoi limitare a moduli specifici. Di seguito, limitiamo l'output
    // al modulo #3382.
 
    if ( absint( $form_data[ 'id' ] ) !== 3382 ) {
        return $fields;
    }
 
    // Ottieni il valore del campo CAP inserito dall'utente
    // ID campo per il campo CAP è '6'
    $zip_code = $fields[6][ 'value' ];
 
    // Array CAP, ogni CAP separato da una virgola
    $zip_code_list = array(
    '85224',
    '85225',
    '85226',
    '85233',
    '85234',
    '85244',
    '85246',
    '85248',
    '85249',
    '85286',
    '85295',
    '85296',
    '85297',
    '85298',
    '85299'
    );
 
    if (!in_array($zip_code, $zip_code_list)) {
 
        // Controlla l'ID campo 75 e mostra un messaggio di errore in cima al modulo e sotto il campo specifico
        wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ]['6'] = esc_html__( 'Ci scusiamo per l'inconveniente, ma attualmente non serviamo la tua zona. Si prega di riprovare in futuro.', 'plugin-domain' );
    }
     
}
add_action( 'wpforms_process', 'wpf_dev_validate_zip_code', 10, 3 );
```

**Nota:** In questo esempio, lo snippet è limitato a un singolo modulo. Controlla l'ID del modulo prima di eseguirlo e convalida il CAP solo su quel modulo. Se desideri applicare la stessa convalida a molti moduli senza duplicare lo snippet, puoi utilizzare l'esempio alternativo più avanti in questa pagina.

Analizziamo questo snippet per spiegare ogni parte. La prima sezione dello snippet verifica se l'ID del modulo che lo snippet sta esaminando corrisponde all'ID del modulo che abbiamo specificato nello snippet. Per questo esempio, questo snippet verrà eseguito solo sul modulo ID **3382**.

La riga successiva dello snippet cerca l'ID campo **6** e recupera il valore inserito nel modulo. Una volta ottenuto questo valore, confronterà quel valore inserito con l'elenco di CAP che abbiamo inserito nell'array **$zip\_code\_list**. Dovrai aggiornare l'ID del modulo, l'ID del campo e aggiornare i CAP visualizzati in questo array per corrispondere ai tuoi CAP.

Per assistenza nel trovare i numeri ID dei tuoi moduli e campi, rivedi il nostro tutorial su [Come localizzare ID modulo e ID campo](https://wpforms.com/developers/how-to-locate-form-id-and-field-id/).

Una volta apportate le modifiche allo snippet, noterai che il modulo non elaborerà l'invio del modulo se il CAP inserito non viene trovato nell'elenco dell'array **$zip\_code\_list**.

![il modulo non verrà inviato se la convalida del campo CAP fallisce](https://wpforms.com/wp-content/uploads/2023/06/wpforms-validate-zipcode-failed-submit.jpg)## Applicazione della Convalida del CAP (su più moduli)

In alcuni casi, potresti voler applicare la stessa convalida del CAP a diversi moduli senza creare uno snippet separato per ciascuno. Invece di controllare un ID modulo e un ID campo specifici, puoi utilizzare uno snippet alternativo che cerca nel modulo inviato un campo la cui etichetta corrisponde a un elenco di etichette di CAP e quindi convalida quel campo.

```

/**
 * Aggiunge la convalida del campo CAP su tutti i moduli, indipendentemente dall'ID campo.
 *
 * @link https://wpforms.com/developers/how-to-add-zip-code-field-validation-on-your-forms/
 */
function wpf_dev_validate_zip_code_all_forms( $fields, $entry, $form_data ) {

    // Definisce le etichette accettate per i campi CAP.
    $zip_labels = array( 'zip', 'zip code', 'postal code' );

    // Trova l'ID campo tramite etichetta.
    $zip_field_id = false;
    foreach ( $form_data['fields'] as $field_id =&gt; $field ) {
        if ( isset( $field['label'] ) &amp;&amp; in_array( strtolower( trim( $field['label'] ) ), $zip_labels, true ) ) {
            $zip_field_id = $field_id;
            break;
        }
    }

    // Se non viene trovato alcun campo corrispondente, salta la convalida.
    if ( ! $zip_field_id || empty( $fields[ $zip_field_id ]['value'] ) ) {
        return $fields;
    }

    // Ottiene il valore inserito dall'utente.
    $zip_code = trim( $fields[ $zip_field_id ]['value'] );

    // CAP consentiti.
    $zip_code_list = array(
        '85224',
        '85225',
        '85226',
        '85233',
        '85234',
        '85244',
        '85246',
        '85248',
        '85249',
        '85286',
        '85295',
        '85296',
        '85297',
        '85298',
        '85299'
    );

    // Convalida il CAP inserito.
    if ( ! in_array( $zip_code, $zip_code_list, true ) ) {
        wpforms()-&gt;process-&gt;errors[ $form_data['id'] ][ $zip_field_id ] = esc_html__(
            'Ci scusiamo per l'inconveniente, ma attualmente non serviamo la tua zona. Si prega di riprovare in futuro.',
            'plugin-domain'
        );
    }

    return $fields;
}
add_action( 'wpforms_process', 'wpf_dev_validate_zip_code_all_forms', 10, 3 );
```

Questo snippet alternativo non dipende da un ID campo fisso. Scorre i campi del modulo, esamina l'etichetta di ciascun campo e cerca di trovare un'etichetta che corrisponda a uno dei valori nell'array `$zip_labels`, come `zip`, `zip code` o `postal code`. Quando trova una corrispondenza, tratta quel campo come campo CAP e confronta il suo valore con lo stesso elenco di CAP consentiti.

Dato che questo snippet utilizza le etichette, è importante che i campi CAP nei tuoi moduli utilizzino etichette che corrispondano a uno dei valori in `$zip_labels`. Se i tuoi moduli utilizzano una dicitura diversa, puoi modificare l'array `$zip_labels` nello snippet e aggiungere il tuo testo dell'etichetta in modo che il codice venga eseguito solo sui campi che ti aspetti.

Non è necessario modificare alcun ID modulo o ID campo in questo snippet. Troverà automaticamente il campo corretto in qualsiasi modulo che abbia un'etichetta corrispondente a uno dei valori in `$zip_labels`.

E questo è tutto ciò che ti serve per aggiungere con successo la convalida del campo CAP a un campo **Testo a riga singola**. Vuoi anche limitare i paesi visualizzati quando si utilizza il campo **Indirizzo** e l'autocompletamento? Dai un'occhiata al nostro tutorial su [Come limitare l'autocompletamento dell'indirizzo a un paese specifico](https://wpforms.com/developers/how-to-restrict-address-autocomplete-to-a-specific-country/ "Come limitare l'autocompletamento dell'indirizzo a un paese specifico").

## Correlati

Riferimento Azione: [wpforms\_process](https://wpforms.com/developers/wpforms_process/ "Utilizzo dell'azione wpforms_process")

**Categorie:** Tutorial

**Tag:** PHP, convalida

---</body></html>