4
Shortcode WP : Afficher ou envoyer le contenu d'un post ID - Courriel formidable form
Intermédiaire

Shortcode WP : Nous allons dans ce tutoriel, créer un formulaire Formidable form qui va dans notre exemple, nous permettre d’afficher le contenu d’un Post ID dans le courriel de l’utilisateur.
Nous allons d’abord créer un formulaire qui va nous permettre de choisir le titre de notre post ou le titre.

Pour ça nous allons créer un formulaire qui va voir deux champs. Un champ courriel et un champ select. Dans notre exemple, notre champ select nous servira à afficher tous les titres d’articles existants et publiés et les convertir en options dans le champ select.

Nous allons faire ce qu’on appelle un Populate Fields, ce qui va retourner notre notre champ select tous les titres d’articles par une fonction requête.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
add_filter('frm_setup_new_fields_vars', 'add_a_field_function_formidable', 20, 2);
add_filter('frm_setup_edit_fields_vars', 'add_a_field_function_formidable', 20, 2);
 
function add_a_field_function_formidable($values, $field){
        // Changer le ID 154 par le ID de votre champ formidable form
	if($field->id == 154){
		$arrayPositions = array();
		$pushobj = array(
			value => "",
			label => "Sélectionnez votre article"
		);
		array_push($arrayPositions, $pushobj);
		$positionQuery = new WP_Query( array( 'post_type' => 'post', '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;
}

Nous allons maintenant utilisé une fonction proposée qui va nous permettre de récupérer le POST ID de l’article choisi dans le formulaire.

1
2
3
4
5
6
7
function get_post_by_title($page_title, $type = "post", $output = OBJECT) {
	global $wpdb;
	$post = $wpdb->get_var ( $wpdb->prepare ( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='$type'", $page_title ) );
	if ($post)
		return get_post ( $post, $output );
	return null;
}

Créons notre shortcode qui va retourner par exemple dans le courriel formidable form, le contenu correspondant à l’article que l’utilisateur a choisi. Comme ça, l’utilisateur reçoit le contenu de l’article par courriel.

1
2
3
4
5
6
7
8
9
function via_create_shortcode_questions_reponses(){
	// Changer votre id par le field de votre champ select Titres des articles
        $title          = do_shortcode( '[frm-field-value field_id=154]' );
	$post_id        = get_post_by_title($title);
 
	$content = get_post_field('post_content', $post_id);
	return $content;
}
add_shortcode( 'reponse', 'via_create_shortcode_questions_reponses' );

Cette idée de formulaire rapide peut être affiché dans un sidebar avec le widget formidable form permettant de choisir le formulaire à afficher.

NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.