Injecter dynamiquement une liste de produits WooCommerce dans un formulaire Gravity Forms

Grâce à la puissance des hooks de Gravity Forms, apprenez comment récupérer automatiquement votre catalogue de produits WooCommerce dans un formulaire personnalisé. Un exemple concret : un formulaire de service après-vente dans lequel vous demandez au client de spécifier le produit concerné. Notre liste déroulante affichera dynamiquement les produits disponibles à la vente sans aucune intervention de votre part.

À l’aide d’un éditeur de code, commencez par éditer votre fichier functions.php de votre thème ou préférez la création d’un mu-plugin si possible.

Rendez-vous ensuite dans votre administration WordPress afin de récupérer l’ID du formulaire cible. Un colonne ID est présente dans la liste des formulaires.

Copiez donc le code ci-dessous dans votre éditeur et remplacez l’ID par celui de votre formulaire – en l’occurrence l’ID numéro 2 par le vôtre.

/* Populate Gravity Forms Dropdown with WooCommerce Products */
add_filter('gform_pre_render_2', 'populate_posts');
add_filter('gform_pre_validation_2', 'populate_posts');
add_filter('gform_pre_submission_filter_2', 'populate_posts');
add_filter('gform_admin_pre_render_2', 'populate_posts');
function populate_posts($form) {
foreach ($form['fields'] as &$field) {
if ( $field->type != 'select' || strpos( $field->cssClass, 'wc_products' ) === false ) {
continue;
}
$posts = get_posts('numberposts=-1&post_status=publish&post_type=product');

$choices = array();

foreach ( $posts as $post ) {
$choices[] = array( 'text' => $post->post_title, 'value' => $post->post_title );
}

// update 'Select a Post' to whatever you'd like the instructive option to be
$field->placeholder = __('Select a product', 'textdomain');
$field->choices = $choices;
}

return $form;
}

Éditons à présent le formulaire. Il nous faut ajouter un champ de type liste déroulante pour lequel vous devez spécifier une classe CSS personalisée dans l’onglet Apparence. Dans notre exemple, il s’agit de wc_products. Cela permettra à Gravity Forms d’injecter dans ce champ la liste des produits.

Il est possible d’utiliser d’autres types de champs avec ce même procédé. N’oubliez pas cependant de modifier le type de champ en remplaçant select par le type concerné.

Sauvegardez le formulaire et le fichier de fonctions puis allez sur la page affichant le formulaire. Votre liste déroulante devrait être en mesure de récupérer automatiquement les produits.

Un dernier détail : remplacer le textdomain par celui de votre thème ou plugin.

Automatiser la récupération de données dans des formulaires est relativement simple à appréhender. Vous pourrez facilement faire évoluer cette fonction PHP en récupérant d’autres types de données que des produits. Faites-en bon usage !

Laisser un commentaire