Introduction
Souhaitez-vous stocker les valeurs des cases à cocher sous forme de tableau pour votre formulaire de soumission d'articles sur un champ méta personnalisé créé à partir du plugin Advanced Custom Fields? Avec un petit extrait de 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 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éation du formulaire
Il est maintenant temps de créer votre formulaire de soumission de message et d'y ajouter un champ Checkbox.
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é.
Ajout de l'extrait permettant de 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 );
Il est important de noter ici que dans l'écran de saisie de WPForms et dans le champ méta lors de l'édition de l'article, vous verrez toujours une case à cocher. Ce n'est qu'une fois les valeurs affichées qu'elles apparaîtront sous la forme d'un tableau (sur une seule ligne), ce que nous vous montrerons dans l'étape suivante. N'oubliez pas non plus de mettre à jour l'ID du formulaire 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.
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.
<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>
Lorsque votre message est affiché, vous verrez que les états sont listés dans un format de paragraphe plutôt que ligne par ligne.
Et le tour est joué ! Vous avez réussi à modifier la façon dont ces valeurs sont stockées dans votre base de données WordPress. Souhaitez-vous également utiliser des images pour vos étiquettes de champs de formulaire Checkbox au lieu de texte ? Jetez un coup d'œil à notre article sur Comment appliquer des images aux étiquettes des cases à cocher à l'aide de CSS.
En rapport
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 prenez le même scénario que celui mentionné dans ce tutoriel, vous pourriez ajouter ceci à l'addon Enregistrement de l'utilisateur afin qu'il soit automatiquement sauvegardé sur la page du profil de l'utilisateur tout en utilisant ACF pour ajouter des informations supplémentaires au profil de l'utilisateur de WordPress.
/** * 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, $fields, $form_data ) { // 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_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );
Remarquez que le nom du filtre est maintenant wpforms_user_registration_process_registration_custom_meta_value
Cela signifie que lorsque vous créez un formulaire d'inscription avec l'option Enregistrement de l'utilisateur ces informations seront stockées dans le profil de l'utilisateur.