Attention !

Cet article contient du code PHP et est destiné aux développeurs. Nous offrons ce code par courtoisie, mais nous ne fournissons pas de support pour les personnalisations de code ou le développement de tierces parties.

Pour plus d'informations, consultez le tutoriel de WPBeginner sur l'ajout de code personnalisé.

Rejeter

Comment stocker les valeurs des cases à cocher sous forme de tableaux avec les soumissions de messages ?

Introduction

Souhaitez-vous stocker les valeurs des cases à cocher sous forme de tableaux pour votre formulaire de soumission d'articles dans un champ méta personnalisé créé à partir du plugin Advanced Custom Fields? Grâce à un petit extrait de code PHP, vous pouvez stocker ces valeurs dans un tableau pour vos champs personnalisés.

Par défaut, lorsque les champs personnalisés sont mappés dans l'addon Post Submission, WPForms stocke les données dans le champ personnalisé dans le même format que WPForms stocke les données dans tous les formulaires.

Par exemple, pour les champs de formulaire à cases à cocher (et tout autre champ à valeurs multiples), WPForms stocke les valeurs sous la forme d'une chaîne unique, chaque valeur se trouvant sur une nouvelle ligne.

Red
Green
Blue

Cependant, avec un petit extrait de PHP, vous pouvez facilement changer cela pour le stocker sous forme de tableau.

array( 'Red', 'Green', 'Blue')

Création de vos champs personnalisés

Tout d'abord, nous allons créer un champ personnalisé pour nos articles à l'aide du plugin Advanced Custom Fields.

Si vous avez besoin de plus d'informations sur la configuration des champs personnalisés, veuillez consulter cet article.

N'oubliez pas que lorsque vous configurez vos champs ACF, ils doivent être identiques. Si vous créez un champ personnalisé pour une case à cocher, assurez-vous que le champ du formulaire est également une case à cocher.

créez vos champs personnalisés dans votre message

Création du formulaire

Il est maintenant temps de créer votre formulaire de soumission de message et d'y ajouter un champ Checkbox.

ajouter une case à cocher à votre formulaire

Si vous avez besoin d'aide pour mettre en place un formulaire de soumission de messages, veuillez consulter cette documentation.

Une fois que vous avez ajouté les champs restants à votre formulaire, allez dans l'onglet Paramètres et cliquez sur Soumissions de messages pour vous assurer que votre champ personnalisé est correctement mappé.

assurez-vous de mapper tous les champs personnalisés dans l'onglet Post Submissions de votre générateur de formulaires

Ajouter l'extrait pour stocker les valeurs sous forme de tableaux

Pour stocker les valeurs sous forme de tableau, il vous suffit de copier cet extrait sur votre site.

Si vous avez besoin d'aide pour ajouter des snippets à votre site, consultez ce tutoriel.

/**
 * Turn checkbox values into an array.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
  
function wpf_dev_post_submission_process_meta( $field_value, $meta_key, $field_id, $fields, $form_data ) {
 
    // Only run on my form with ID = 443
    if ( absint( $form_data[ 'id' ] ) !== 443 ) {
            return;
    } 
      
    // The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields
    if ( $meta_key === 'have_visited' ) {
 
            $field_value = explode( "\n", $field_value );
 
        }
  
    return $field_value;
}
add_filter( 'wpforms_post_submissions_process_meta', 'wpf_dev_post_submission_process_meta', 10, 5 );

NoteIl est important de noter ici que dans l'écran des entrées de WPForms et dans le champ méta lors de la modification de l'article, vous verrez toujours une case à cocher. Ce n'est que lorsque vous affichez les valeurs qu'elles apparaîtront sous forme de tableau (sur une seule ligne) et nous vous montrerons cela à l'étape suivante. N'oubliez pas non plus de mettre à jour l'ID du formulaire à partir de 443 pour qu'il corresponde à votre propre identifiant de formulaire. Si vous avez besoin d'aide pour trouver votre numéro de formulaire, Veuillez consulter cette documentation utile.

Affichage des valeurs

Il est maintenant temps d'afficher ces valeurs sur votre modèle d'article unique. WPForms ne recommande jamais de modifier votre thème en direct, il est donc préférable d'utiliser un thème enfant ou une fonction personnalisée pour afficher ces valeurs sur votre modèle.

Pour plus d'informations sur la création d'un thème enfant, consultez cet excellent article de nos amis de WPBeginner.

afficher les valeurs sous forme de tableaux dans votre modèle d'article unique
<div class="states_wrapper">
    <?php if( get_field('have_visited') ): ?> 
        <p>I've already visited these states in the last 5 years: <?php the_field('have_visited'); ?></p> 
    <?php endif; ?>
</div>

Pour les besoins de ce tutoriel, nous avons créé notre thème enfant et, dans le fichier single.php, nous avons ajouté cette ligne de code pour nous assurer que les valeurs sont présentes et, si elles le sont, pour les afficher.

Lorsque votre message est affiché, vous verrez que les états sont listés dans un format de paragraphe plutôt que ligne par ligne.

les valeurs des cases à cocher seront désormais affichées sur une seule ligne

Et voilà ! Vous avez réussi à modifier la façon dont ces valeurs sont stockées dans votre base de données WordPress. Vous souhaitez également utiliser des images à la place du texte pour les libellés des champs de formulaire Checkbox? Consultez notre article intitulé « Comment appliquer des images aux libellés Checkbox à l'aide de CSS ».

Référence du filtre : wpforms_post_submissions_process_meta

FAQ

A : Puis-je l'utiliser dans d'autres modules complémentaires ?

R : Absolument ! Par exemple, si vous reprenez le même scénario que celui mentionné dans ce tutoriel, vous pouvez ajouter cela à l'extension User Registration afin que cela soit automatiquement enregistré dans la page du profil utilisateur tout en utilisant ACF pour ajouter des informations supplémentaires au profil utilisateur WordPress.

Dans la version 2.8.0 et les versions ultérieures du module complémentaire User Registration, le filtre permettant de stocker les valeurs méta personnalisées est le suivant :

wpforms_user_registration_process_base_custom_meta_value

Remarque : dans les versions antérieures (avant User Registration 2.8.0), ce filtre s'appelait :

wpforms_user_registration_process_registration_custom_meta_value

Si vous gérez un site hérité, vous pouvez conserver les deux hooks pour assurer la compatibilité ascendante.

/**
 * Turn checkbox values into an array with the User Registration addon.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
function wpf_dev_user_submission_process_meta( $field_value, $meta_key = '', $field_id = 0, $field = array(), $form_data = array() ) {

	// The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields.
	if ( $meta_key === 'have_visited' ) {
		$field_value = explode( "\n", $field_value );
	}

	return $field_value;
}

// User Registration addon 2.8.0+.
add_filter( 'wpforms_user_registration_process_base_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

// Backward compatibility for older versions (before 2.8.0).
add_filter( 'wpforms_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

C'est tout ! Désormais, les valeurs de vos cases à cocher seront enregistrées sous forme de tableau lorsque WPForms les mappera à votre champ méta de publication personnalisé.

Vous souhaitez en savoir plus sur la configuration des soumissions d'articles, y compris le mappage des champs méta personnalisés, consultez notre guide sur l'extension Post Submissions.