Comment définir un drapeau par défaut sur un champ de téléphone intelligent avec GDPR

Souhaitez-vous définir un drapeau par défaut dans le champ Smart Phone lorsque le GDPR est activé ? Lorsque vous utilisez le champ de formulaire Smart Phone, le drapeau de pays par défaut tente d'être défini en fonction de l'adresse IP de l'utilisateur. Lorsque le paramètre GDPR est activé, ce paramètre est bloqué et le drapeau doit donc être défini manuellement par vos visiteurs.

En utilisant un petit extrait de code JavaScript, vous pouvez définir le drapeau d'un pays par défaut à l'aide d'un nombre afin de ne pas enfreindre votre accord GDPR tout en évitant à l'utilisateur de faire un pas en avant. Nous allons vous montrer comment y parvenir dans ce tutoriel.

Mise en place du formulaire

Tout d'abord, pour les besoins de ce tutoriel, nous supposerons que vous avez déjà activé le paramètre GDPR de WPForms. Si vous avez besoin d'aide, veuillez consulter cette documentation.

Une fois le paramètre GDPR activé, il est temps d'ajouter un téléphone intelligent à votre formulaire.

Ajouter un champ de formulaire pour téléphone intelligent à votre formulaire

Maintenant que le champ est ajouté, vous pouvez également ajouter le champ de votre formulaire d'accord GDPR.

Ensuite, ajoutez le champ de formulaire Accord GDPR au formulaire

Réglage du drapeau par défaut

Il est maintenant temps d'ajouter l'extrait de code suivant à votre site. Si vous ne savez pas où et comment ajouter des extraits de code à votre site, veuillez consulter ce tutoriel.

/**
 * 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' );
                 
                // 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 );

Le code ci-dessus recherche l'élément options.initialCountry = 'SZ'; et définir le drapeau de ce pays.

Si vous avez besoin d'aide pour trouver le code du pays auquel vous souhaitez attribuer votre drapeau, veuillez consulter cette page pour trouver le numéro correct.

Désormais, lorsque la page se chargera, le drapeau sera automatiquement placé sur le champ.

Désormais, un indicateur par défaut sera défini dans le champ du formulaire Smart Phone

Vous souhaitez également restreindre les pays dans un champ pour téléphone intelligent? Jetez un coup d'œil à notre tutoriel sur Comment restreindre les pays dans les champs d'un formulaire pour téléphone intelligent.

Référence Action

wpforms_wp_footer_end

FAQ

Q : Cela fonctionnera-t-il sur un formulaire avec des sauts de page ?

R : Si votre formulaire comporte des champs de rupture de page, vous devez également utiliser l'extrait de ce tutoriel.

Q : Comment puis-je limiter l'affichage à certains pays ?

A : Si vous souhaitez n'accepter que certains pays, vous devez utiliser cet extrait. Dans notre exemple, nous avons vérifié le code pays à deux lettres pour obtenir les codes corrects pour le ÉTATS-UNIS et Grande-Bretagne et les a placés à l'intérieur du options.onlyCountries ligne de code.

/**
 * 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' );
                 
                // 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 );

Q : Comment puis-je faire figurer mes "pays préférés" en tête de liste ?

R : Pour afficher les pays que vous préférez en tête de liste, utilisez plutôt cet extrait.

/**
 * 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' );

				// 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' );