Souhaitez-vous créer un identifiant unique pour chacune de vos entrées de formulaire ? Donner à chaque entrée de formulaire un numéro de référence unique peut faciliter le suivi de toute fonction interne que vous pourriez vouloir référencer plus tard. En utilisant PHP et les Smart Tags de WPForms, vous pouvez facilement réaliser cela. Dans ce tutoriel, nous allons vous guider à travers chaque étape.
Il existe déjà un Smart Tag par défaut dans WPForms qui génère une valeur unique. Cependant, le but de ce tutoriel est de contrôler ce que cette valeur unique peut être, comme la limiter aux nombres, ajouter un préfixe avant l'ID unique, etc. Pour plus d'informations sur la balise intelligente Valeur unique, veuillez consulter ce guide utile.
Pour ce tutoriel, nous allons créer un formulaire d'assistance pour nos visiteurs. Chaque demande d'assistance se verra attribuer un identifiant unique. Il s'agit du numéro du ticket d'assistance. Ce numéro sera stocké dans un champ caché à l'intérieur de l'entrée.
Création de l'identifiant unique
Nous commençons généralement nos tutoriels par la création de notre formulaire. Cependant, comme nous voulons utiliser cette balise intelligente dans notre générateur de formulaires, nous commencerons par ajouter l'extrait de code à notre site cette fois-ci. Si vous avez besoin d'aide pour ajouter des extraits de code à votre site, vous pouvez consulter ce tutoriel.
/*
* Create a unique_id Smart Tag and assign it to each form submission.
*
* @link https://wpforms.com/developers/how-to-create-a-unique-id-for-each-form-entry/
*/
// Generate Unique ID Smart Tag for WPForms
function wpf_dev_register_smarttag( $tags ) {
// Key is the tag, item is the tag name.
$tags['unique_id'] = 'Unique ID';
return $tags;
}
add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag' );
// Generate Unique ID value
function wpf_dev_process_smarttag( $content, $tag, $form_data, $fields, $entry_id ) {
// Only run if it is our desired tag.
if ( 'unique_id' === $tag && !$entry_id ) {
// Replace the tag with our Unique ID that will be prefixed with wpf.
$content = str_replace( '{unique_id}', uniqid( 'wpf', true ), $content );
} elseif ( 'unique_id' === $tag && $entry_id ) {
foreach ( $form_data['fields'] as $field ) {
if ( preg_match( '/\b{unique_id}\b/', $field['default_value'] ) ) {
$field_id = $field['id'];
break;
}
}
$content = str_replace( '{unique_id}', $fields[$field_id]['value'], $content );
}
return $content;
}
add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 5 );
Ce snippet va non seulement créer le code dont nous avons besoin pour construire un identifiant unique avec chaque soumission de formulaire, mais aussi nous permettre d'utiliser ce numéro comme une balise intelligente afin de pouvoir l'attacher à nos entrées de formulaire.
Création du formulaire
Ensuite, nous allons créer notre formulaire d'assistance. Ce formulaire contiendra des champs pour le nom, l'adresse électronique, un champ déroulant pour essayer de saisir le problème, et enfin, un champ de texte de paragraphe pour permettre à nos visiteurs de donner plus d'informations sur l'assistance qu'ils recherchent. Cependant, comme nous voulons stocker ce numéro dans le cadre de nos entrées, nous ajouterons également un champ caché pour stocker ce numéro d'identification unique.
Après avoir ajouté le champ caché, cliquez dessus pour ouvrir le panneau des options du champ. Allez ensuite dans la section Options avancées.
Dans la valeur par défaut, ajoutez simplement la balise intelligente {unique_id}.

Ajout de l'identifiant unique aux messages de confirmation
Si vous souhaitez ajouter votre identifiant unique à votre message de confirmation, vous devez placer la valeur stockée dans le champ caché lorsque le formulaire est soumis.
Dans notre formulaire, l'ID du champ était 6, comme vous pouvez le voir dans l'image précédente. Nous allons donc ajouter ceci à notre message de confirmation afin qu'il récupère exactement la même valeur.
{field_id="6"}

Désormais, lorsque le formulaire sera soumis, vos visiteurs verront l'identifiant unique et celui-ci sera enregistré dans le champ caché du formulaire.

FAQ
Q : Que se passe-t-il si je souhaite un nombre spécifique de caractères pour mon identifiant unique ?
R : Vous pouvez voir que l'exemple suivant ne fournira qu'un identifiant unique à 6 chiffres (hexadécimaux uniquement).
/*
* Create a unique ID with a specific number of characters and assign it to each form submission.
*
* @link https://wpforms.com/developers/how-to-create-a-unique-id-for-each-form-entry/
*/
// Generate Unique ID Smart Tag for WPForms
function wpf_dev_register_smarttag( $tags ) {
// Key is the tag, item is the tag name.
$tags['unique_id'] = 'Unique ID';
return $tags;
}
add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag' );
// Generate Unique ID value
function wpf_dev_process_smarttag( $content, $tag, $form_data, $fields, $entry_id ) {
// Only run if it is our desired tag.
if ( 'unique_id' === $tag && !$entry_id ) {
// Generate a hexadecimal string based on the time to ensure uniqueness
// Reduce the string to 6 characters
$uuid = substr( md5( time() ), 0, 6 );
// Replace the tag with our Unique ID.
$content = str_replace( '{unique_id}', $uuid, $content );
} elseif ( 'unique_id' === $tag && $entry_id ) {
foreach ( $form_data['fields'] as $field ) {
if ( preg_match( '/\b{unique_id}\b/', $field['default_value'] ) ) {
$field_id = $field['id'];
break;
}
}
$content = str_replace( '{unique_id}', $fields[$field_id]['value'], $content );
}
return $content;
}
add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 5 );
Ce snippet récupère l'heure actuelle, la convertit en chaîne hexadécimale et la limite à un nombre de 6 caractères.
Q : Puis-je utiliser cet extrait pour obtenir une valeur uniquement numérique ?
A : Bien sûr ! Vous pouvez utiliser cet extrait qui renverra une valeur numérique unique comprise entre 1 et 5 000 000 000. L'utilisation de cette plage de chiffres signifie que vous obtiendrez un nombre unique de 1 à 10 chiffres. Si vous souhaitez réduire le nombre de chiffres générés, vous devez en tenir compte dans la section rand(1, 5000000000)
.
/*
* Create a unique_id numeric-only Smart Tag and assign it to each form submission.
*
* @link https://wpforms.com/developers/how-to-create-a-unique-id-for-each-form-entry/
*/
// Generate Unique ID Smart Tag for WPForms
function wpf_dev_register_smarttag( $tags ) {
// Key is the tag, item is the tag name.
$tags['unique_number_id'] = 'Unique Number ID';
return $tags;
}
add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag' );
// Generate Unique ID value
function wpf_dev_process_smarttag( $content, $tag, $form_data, $fields, $entry_id ) {
// Only run if it is our desired tag.
if ( 'unique_number_id' === $tag && !$entry_id ) {
// Generate a random numeric ID between 1 and 5,000,000,000
$unique_id = rand(1, 5000000000);
// Replace the tag with our Unique ID.
$content = str_replace( '{unique_number_id}', $unique_id, $content );
} elseif ( 'unique_number_id' === $tag && $entry_id ) {
foreach ( $form_data['fields'] as $field ) {
if ( preg_match( '/\b{unique_number_id}\b/', $field['default_value'] ) ) {
$field_id = $field['id'];
break;
}
}
$content = str_replace( '{unique_number_id}', $fields[$field_id]['value'], $content );
}
return $content;
}
add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 5 );
Q : Puis-je préfixer l'identifiant unique ?
R : Absolument. Si vous souhaitez ajouter un préfixe, vous pouvez utiliser cet extrait.
/*
* Create a unique ID and add a prefix.
*
* @link https://wpforms.com/developers/how-to-create-a-unique-id-for-each-form-entry/
*/
// Generate Unique ID Smart Tag for WPForms
function wpf_dev_register_smarttag( $tags ) {
// Key is the tag, item is the tag name.
$tags['my_unique_id'] = 'My Unique ID';
return $tags;
}
add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag' );
// Generate Unique ID value
function wpf_dev_process_smarttag( $content, $tag, $form_data, $fields, $entry_id ) {
// Only run if it is our desired tag.
if ( 'my_unique_id' === $tag && !$entry_id ) {
// Replace the tag with our Unique ID that will be prefixed with "WPF-".
$content = str_replace( '{my_unique_id}', uniqid('WPF-', true), $content );
} elseif ( 'my_unique_id' === $tag && $entry_id ) {
foreach ( $form_data['fields'] as $field ) {
if ( preg_match( '/\b{my_unique_id}\b/', $field['default_value'] ) ) {
$field_id = $field['id'];
break;
}
}
$content = str_replace( '{my_unique_id}', $fields[$field_id]['value'], $content );
}
return $content;
}
add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 5 );
Q : Puis-je contrôler le nombre en incrémentant le compte ?
R : Absolument. Toutefois, si vous souhaitez incrémenter le nombre, nous vous recommandons de suivre ce guide utile.
Q : Puis-je utiliser la valeur du champ du formulaire comme préfixe de l'identifiant unique ?
R : Oui. L'extrait ci-dessous vous permettra d'utiliser un champ spécifique de votre formulaire comme préfixe de l'identifiant unique.
/*
* Create a unique ID and add a prefix based on user submitted data.
*
* @link https://wpforms.com/developers/how-to-create-a-unique-id-for-each-form-entry/
*/
// Generate Unique ID on form submission and add to a hidden field
function wpf_dev_generate_unique_id( $fields, $entry, $form_data ) {
// Replace '5' with the actual field ID of your field
$field_id = 5;
// Replace '3' with the actual field ID of your hidden field for unique ID
$hidden_field_id = 3;
// Check if the field exists and has a value
if ( isset( $fields[$field_id]['value'] ) && ! empty( $fields[$field_id]['value'] ) ) {
// Get the field value
$field_value = $fields[$field_id]['value'];
// Sanitize the field value to use as a prefix
$prefix = preg_replace( '/[^A-Za-z0-9]/', '', $field_value );
// Generate unique ID with the dropdown value as prefix
$unique_id = $prefix . '-' . uniqid();
// Add the unique ID to the hidden field
foreach ( $fields as &$field ) {
if ( $field['id'] == $hidden_field_id ) {
$field['value'] = $unique_id;
break;
}
}
}
return $fields;
}
add_filter( 'wpforms_process_filter', 'wpf_dev_generate_unique_id', 10, 3 );
// Register the Unique ID Smart Tag for WPForms
function wpf_dev_register_smarttag( $tags ) {
// Key is the tag, item is the tag name.
$tags['my_unique_id'] = 'My Unique ID';
return $tags;
}
add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag' );
// Process Unique ID Smart Tag to retrieve the value from the hidden field
function wpf_dev_process_smarttag( $content, $tag, $form_data, $fields, $entry_id ) {
// Only run if it is our desired tag
if ( 'my_unique_id' === $tag ) {
// Replace '3' with the actual field ID of your hidden field for unique ID
$hidden_field_id = 3;
if ( isset( $fields[$hidden_field_id]['value'] ) ) {
$content = str_replace( '{my_unique_id}', $fields[$hidden_field_id]['value'], $content );
}
}
return $content;
}
add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 5 );
Vous devrez remplacer les valeurs de l'élément $field_id
avec l'ID du champ de formulaire spécifique que vous souhaitez utiliser pour le préfixe. Remplacez également la variable $hidden_field_id
avec l'ID du champ caché avec l'ID unique Smart Tag sur votre formulaire.
C'est tout ce dont vous avez besoin pour créer un identifiant unique pour chaque soumission de formulaire. Souhaitez-vous traiter une étiquette intelligente à l'intérieur d'une étiquette de champ Checkbox? Essayez notre tutoriel sur Comment traiter les Smart Tags dans les étiquettes de champs Checkbox.