NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.
Publié le : 04 octobre 2022 - Modifié le : 27 octobre 2022
Temps de lecture : 2 minutes, 50 seconds - 269 mots
Partager la publication "Remplir un champ de sélection – Formidable Form"
Nous allons dans ce tutoriel, remplir un champ de sélection dans Formidable Form. Formidable form est l’une des plus belles extensions concernant la création de formulaires.
Créer un formulaire et ajouter un champ de sélection.
Vous pouvez donc créer un formulaire, paramétrer vos réglages et ensuite l’ajouter dans votre page ou article WordPress.
Ensuite, vos configurations faites, vous pouvez ajouter les champs nécessaires pour votre formulaire. (À noter que certains champs ne sont disponibles qu’en version PRO)
Dans notre cas, nous allons ajouter un champ personnalisé de type sélection.
Ensuite en cliquant sur notre champ, on peut voir le ID du champ à droite. Cet ID va être l’objet important où l’on va faire une requête pour afficher par exemple les articles dans cette sélection.
Remplir dynamiquement le champ de sélection - Nos articles
Pour effectuer cette requête nous allons créer une fonction filtre frm_setup_new_fields_vars de Formidable Form.
Pour éditer les valeurs des résultats, nous ajoutons le filtre frm_setup_new_fields_vars
Dans notre fonction on récupère notre ID (72) de notre champ ou vont apparaitre nos résultats de notre requête, c’est-à-dire nos articles.
Comme nous pouvoir voir dans notre fonction, nous avons créé un label par défaut pour votre sélection. (Dans notre exemple c’est Sélectionnez une question)
label => “Sélectionnez une question”
add_filter('frm_setup_new_fields_vars', 'themespress_select_field_function', 20, 2); add_filter('frm_setup_edit_fields_vars', 'themespress_select_field_function', 20, 2); function themespress_select_field_function($values, $field){ if($field->id == 72){ $arrayPositions = array(); $pushobj = array( value => "", label => "Sélectionnez une question" ); array_push($arrayPositions, $pushobj); $positionQuery = new WP_Query( array( 'post_type' => 'questions', 'posts_per_page' => -1, 'orderby' => "menu_order", 'order' => "ASC") ); if ( $positionQuery->have_posts() ) { while ( $positionQuery->have_posts() ) { $positionQuery->the_post(); $pushobj = array( value => get_the_title(), label => get_the_title() ); array_push($arrayPositions, $pushobj); } wp_reset_postdata(); } $values['options'] = $arrayPositions; } return $values; }
Finalement dans votre requête, vous pouvez adapter aux articles ou types d’articles que vous souhaitez afficher.
$positionQuery = new WP_Query( array( 'post_type' => 'questions', 'posts_per_page' => -1, 'orderby' => "menu_order", 'order' => "ASC") );