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

Table-WordPress-–-Entrées-d’un-formulaire-Formidable
Intermédiaire

---- Cet article a été modifié : 27 octobre 2022

Temps de lecture : 4 minutes, 24 seconds - 308 mots

Vous souhaitez créer une entrée dans une table personnalisée WordPress venant d’un formulaire Formidable Form ?

Imaginons que vous avez créé une table afin d’obtenir des données formulaire ou d’en faire des statistiques.

Ainsi votre table créée avec ses colonnes respectives, construisez donc les champs correspondants aux colonnes de votre table.

Si vous souhaitez créer une table avec une fonction, voici une fonction qui permet de créer une table WordPress (Article interressant)

Créer une entrée table venant d'un formulaire Formidable
//////////////////////////////////////////////////////////////////////
// Create database table
//////////////////////////////////////////////////////////////////////

function database_wooclassementstats() {
	global $wpdb;
	$charset_collate = $wpdb->get_charset_collate();
	$table_name = $wpdb->prefix . 'wooclassementstats';
		$sql = "CREATE TABLE $table_name (
		id mediumint(9) NOT NULL AUTO_INCREMENT,
		viewdate date DEFAULT '0000-00-00' NOT NULL,
		viewtime time DEFAULT '00:00:00' NOT NULL,
		productid int(11) NOT NULL,
		productname varchar(60) NOT NULL,
		producturl text NOT NULL,
		userip varchar(60) NOT NULL,
		username varchar(60) NOT NULL,
		userid bigint(20) NOT NULL,
		usercountry text NOT NULL,
		usercity varchar(255) NOT NULL,
		userbrowser varchar(255) NOT NULL,
		userbrowserversion varchar(255) NOT NULL,
		userbrowserplateform varchar(255) NOT NULL,	
		userviews smallint(5) NOT NULL,
		userclicks smallint(5) NOT NULL,
		urlfrom text NOT NULL,
		type varchar(60) DEFAULT 'vue' NOT NULL,
		language varchar(60) NOT NULL,
		UNIQUE KEY id (id)
		) $charset_collate;";
	require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
	dbDelta( $sql );
}	
add_action( 'init', 'database_wooclassementstats');

Donc voici notre table dans phpMyAdmin.

Comme vous pouvez le constater, il y a plusieurs colonnes dans notre table WordPress.

Tout d’abord, changer le nom de la table wooclassementstats par le nom de votre table.

Aussi, remplacez les colonnes de la table par les vôtres en changeant leurs noms et en adaptant les types de colonnes recherchées.

Insérer les données des champs Formidable - Table WordPress

Pour cela, nous allons utiliser le hook Formidable Form frm_after_create_entry

Dans notre hook, nous allons donner la condition d’aller chercher les données provenant de notre formulaire correspondant à notre ID formulaire.

La variable $values englobe les valeurs récupérées de notre formulaire. Changer les noms des colonnes et les IDS des champs correspondant à chaque champ.

add_action('frm_after_create_entry', 'copy_into_my_table', 20, 2);
function copy_into_my_table($entry_id, $form_id){ 
  if($form_id == 2){ //change 4 to the form id of the form to copy
    global $wpdb;
    $values = array(
    'col_name'         => $_POST['item_meta'][24], 
    'col_name'         => $_POST['item_meta'][25], 
    'col_name'         => $_POST['item_meta'][22],
    'col_name'         => $_POST['item_meta'][21],
    'col_name'         => $_POST['item_meta'][26],
    'col_name'         => $_POST['item_meta'][23],
    'col_name'         => '',
    'col_name'         => '', 
    'col_name'         => $_POST['item_meta'][27],
    );
    //replace 25 and 26 with the field ids of the Formidable form. Change col_name to the column names in your table
    $wpdb->insert('wpeo_LDAAnalytics', $values); 
  }
}

Pour les sites web Multisites

Si vous avez un multisite, dans un premier temps, il faut s’assurer que les formulaires n’aient pas le même ID. Si cela arrive, il faut utiliser le switch_to_blog

On englobe notre condition formulaire entre les switch_to_blog et le restore_current_blog();  qui va s’assurer de respecter la requête dans la condition du blog concerné.

//////////////////////// Insert datas after create entry from Form  /////////////////////

add_action('frm_after_create_entry', 'copy_into_my_table', 20, 2);
function copy_into_my_table($entry_id, $form_id){ 
	switch_to_blog(2);
	if($form_id == 2){ //change 4 to the form id of the form to copy
		global $wpdb;
		$values = array(
		'col_name'         => $_POST['item_meta'][24], 
		'col_name'         => $_POST['item_meta'][25], 
		'col_name'         => $_POST['item_meta'][22],
		'col_name'         => $_POST['item_meta'][21],
		'col_name'         => $_POST['item_meta'][26],
		'col_name'         => $_POST['item_meta'][23],
		'col_name'         => '',
		'col_name'         => '', 
		'col_name'         => $_POST['item_meta'][27],
		);
		//replace 25 and 26 with the field ids of the Formidable form. Change col_name to the column names in your table
		$wpdb->insert('wpeo_LDAAnalytics', $values); 
	}
	restore_current_blog();
}

En conclusion, c’est merveilleux d’insérer des données dans une table WordPress, cela permet par exemple, d’avoir une copie des données formulaires, ou pourquoi pas de proposer des statistiques pour vos clients.

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>