Attenzione!

Questo articolo contiene codice PHP e JavaScript ed è destinato agli sviluppatori. Offriamo questo codice per cortesia, ma non forniamo supporto per personalizzazioni del codice o sviluppo di terze parti.

Per ulteriore assistenza, consulta il tutorial di WPBeginner su come aggiungere codice personalizzato.

Chiudi

Come impostare una bandiera predefinita sul campo telefono intelligente con GDPR

Desideri impostare una bandiera predefinita sul campo Numero di telefono quando il GDPR è abilitato? Quando si utilizza il campo modulo Numero di telefono, la bandiera del paese predefinita tenterà di essere impostata in base all'indirizzo IP dell'utente. Quando l'impostazione GDPR è abilitata, questa impostazione viene bloccata e quindi la bandiera dovrebbe essere impostata manualmente dai tuoi visitatori.

Utilizzando un piccolo snippet di codice JavaScript puoi impostare la bandiera su un paese predefinito tramite un numero in modo da non violare il tuo accordo GDPR, ma allo stesso tempo risparmiando un passaggio all'utente. Ti mostreremo come ottenere questo risultato con questo tutorial.

Configurazione del modulo

Innanzitutto, ai fini di questo tutorial, presumeremo che tu abbia già abilitato l'impostazione GDPR di WPForms. Se hai bisogno di ulteriore assistenza, consulta questa documentazione.

Una volta abilitata l'impostazione per il GDPR, è ora di aggiungere un Numero di telefono al tuo modulo.

Aggiungi un campo modulo Numero di telefono al tuo modulo

Ora che il campo è stato aggiunto, puoi aggiungere anche il tuo campo modulo Accordo GDPR.

Successivamente, aggiungi il campo modulo Accordo GDPR al modulo

Impostazione della bandiera predefinita

Ora è il momento di aggiungere il seguente snippet di codice al tuo sito. Se non sei sicuro dove e come aggiungere snippet al tuo sito, consulta questo tutorial.

/**
 * Set the country code on Smart Phone form field country flag
 *
 * @link   https://wpforms.com/how-to-set-a-default-flag-on-smart-phone-field-with-gdpr/
 */
  
function wpf_dev_smart_phone_field_initial_country() {
    ?>
    <script type="text/javascript">
        jQuery( document ).on( 'wpformsReady', function() {
            jQuery( '.wpforms-smart-phone-field' ).each(function(e){
                var $el = jQuery( this ),
                    iti = $el.data( 'plugin_intlTelInput' ),
                    options;
                // Options are located in different keys of minified and unminified versions of jquery.intl-tel-input.js.
                if ( iti.d ) {
                    options = Object.assign( {}, iti.d );
                } else if ( iti.options ) {
                    options = Object.assign( {}, iti.options );
                }
                if ( ! options ) {
                    return;
                }
                $el.intlTelInput( 'destroy' );
                $el.off( 'validate' );
                  
                // Put a country code here according to this list: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
                options.initialCountry = 'SZ'.toLowerCase();
                  
                $el.intlTelInput( options );
                  
                // Restore hidden input name after intlTelInput is reinitialized.
                $el.siblings( 'input[type="hidden"]' ).each(function() {
                    const $hiddenInput = jQuery( this );
                    $hiddenInput.attr( 'name', $hiddenInput.attr( 'name' ).replace( 'wpf-temp-', '' ) );
                });
            });
        } );
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_smart_phone_field_initial_country', 30 );

Questo codice sopra cercherà `options.initialCountry = 'SZ';` e imposterà la bandiera per quel paese.

Se hai bisogno di aiuto per trovare il codice paese corretto per cui impostare la tua bandiera, dai un'occhiata a questa pagina per trovare il numero corretto.

Ora, quando la pagina verrà caricata, imposterà automaticamente la bandiera sul campo.

Ora verrà impostata una bandiera predefinita sul campo modulo Numero di telefono

Desideri anche limitare i paesi per un campo Numero di telefono? Dai un'occhiata al nostro tutorial su Come limitare i paesi all'interno dei campi modulo Numero di telefono.

Azione di riferimento

wpforms_wp_footer_end

FAQ

D: Funzionerà su un modulo con interruzioni di pagina?

R: Se il tuo modulo ha i campi modulo Interruzione di pagina, allora vorrai anche utilizzare lo snippet di questo tutorial.

D: Come posso limitare solo alcuni paesi che appaiono?

R: Se vuoi accettare solo determinati paesi, useresti questo snippet. Nel nostro esempio, abbiamo controllato il codice paese di due lettere per i codici corretti per USA e Gran Bretagna e li abbiamo inseriti nella riga di codice `options.onlyCountries`.

/**
 * Restrict countries to only on Smart Phone form field country flag
 *
 * @link   https://wpforms.com/how-to-set-a-default-flag-on-smart-phone-field-with-gdpr/
 */
  
function wpf_dev_smart_phone_field_restrict_countries() {
    ?>
    <script type="text/javascript">
        jQuery( document ).on( 'wpformsReady', function() {
            jQuery( '.wpforms-smart-phone-field' ).each(function(e){
                var $el = jQuery( this ),
                    iti = $el.data( 'plugin_intlTelInput' ),
                    options;
                // Options are located in different keys of minified and unminified versions of jquery.intl-tel-input.js.
                if ( iti.d ) {
                    options = Object.assign( {}, iti.d );
                } else if ( iti.options ) {
                    options = Object.assign( {}, iti.options );
                }
                if ( ! options ) {
                    return;
                }
                $el.intlTelInput( 'destroy' );
                $el.off( 'validate' );
                  
                // Set the initial country
                options.initialCountry = 'gb'.toLowerCase();
   
                // Put a country code here according to this list: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
                options.onlyCountries = [ 'gb','us' ];
                  
                $el.intlTelInput( options );
                  
                // Restore hidden input name after intlTelInput is reinitialized.
                $el.siblings( 'input[type="hidden"]' ).each(function() {
                    const $hiddenInput = jQuery( this );
                    $hiddenInput.attr( 'name', $hiddenInput.attr( 'name' ).replace( 'wpf-temp-', '' ) );
                });
            });
        } );
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_smart_phone_field_restrict_countries', 30 );

D: Come posso abilitare i miei "paesi preferiti in cima alla lista?"

R: Per mostrare i paesi che preferisci in cima alla lista, usa invece questo snippet.

/**
 * Show preferred countries inside the Smart Phone form field
 *
 * @link   https://wpforms.com/developers/how-to-set-a-default-flag-on-smart-phone-field-with-gdpr/
 */
 
function wpf_dev_smart_phone_field_preferred_countries() {
    ?>
    <script type="text/javascript">
        jQuery( document ).on( 'wpformsReady', function() {
            jQuery( '.wpforms-smart-phone-field' ).each(function(e){
                var $el = jQuery( this ),
                    iti = $el.data( 'plugin_intlTelInput' ),
                    options;
                // Options are located in different keys of minified and unminified versions of jquery.intl-tel-input.js.
                if ( iti.d ) {
                    options = Object.assign( {}, iti.d );
                } else if ( iti.options ) {
                    options = Object.assign( {}, iti.options );
                }
                if ( ! options ) {
                    return;
                }
 
                $el.intlTelInput( 'destroy' );
                $el.off( 'validate' );
 
                // Put a country code here according to this list: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
                options.initialCountry = 'in'.toLowerCase();
 
                // the countries at the top of the list. defaults to united states and united kingdom
                options.preferredCountries = ["de", "in"]; //your preferred country
 
                $el.intlTelInput( options );
 
                // Restore hidden input name after intlTelInput is reinitialized.
                $el.siblings( 'input[type="hidden"]' ).each(function() {
                    const $hiddenInput = jQuery( this );
                    $hiddenInput.attr( 'name', $hiddenInput.attr( 'name' ).replace( 'wpf-temp-', '' ) );
                });
            });
        } );
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_smart_phone_field_preferred_countries' );