Resumen de IA
¿Le gustaría crear un ID único para cada una de las entradas de su formulario? Asignar un número de referencia único a cada entrada del formulario puede facilitar el seguimiento de cualquier función interna a la que desee hacer referencia más adelante. Utilizando PHP y las Smart Tags de WPForms, puede lograr esto fácilmente. En este tutorial, le guiaremos paso a paso.
Ya existe una Smart Tag predeterminada en WPForms que generará un valor único. Sin embargo, el propósito de este tutorial es controlar cuál puede ser ese valor único, como limitarlo solo a números, agregar un prefijo antes del ID único, etc. Para obtener más información sobre la Smart Tag de Valor Único, consulte esta útil guía.
Para este tutorial, crearemos un formulario de soporte para nuestros visitantes. A cada envío de soporte se le asignará un ID único. Este será su número de ticket de soporte. Luego, almacenaremos ese número dentro de la entrada en un Campo Oculto.
Creación del ID único
Normalmente comenzamos nuestros tutoriales creando nuestro formulario. Sin embargo, dado que queremos usar esta Smart Tag dentro de nuestro constructor de formularios, comenzaremos agregando primero el fragmento de código a nuestro sitio. Si necesita ayuda para agregar fragmentos de código a su sitio, puede leer este tutorial para obtener ayuda.
/*
* 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 );
Este fragmento no solo creará el código que necesitamos para generar un ID único con cada envío de formulario, sino que también nos permitirá usar este número como una Smart Tag para que podamos adjuntarlo a las entradas de nuestro formulario.
Creación de su formulario
A continuación, crearemos nuestro formulario de soporte. Este formulario contendrá campos para Nombre, Dirección de correo electrónico, un campo desplegable para intentar capturar el problema y, finalmente, un campo de formulario de Texto de Párrafo para permitir a nuestros visitantes un lugar donde proporcionar información adicional sobre el soporte que buscan. Sin embargo, dado que queremos almacenar este número como parte de nuestras entradas, también agregaremos un Campo Oculto para almacenar ese número de ID único también.
Después de agregar el Campo Oculto, haga clic en él para abrir el panel de Opciones del Campo. Luego, vaya a la sección Opciones Avanzadas.
En el Valor Predeterminado, simplemente agregue la Smart Tag {unique_id}.

Añadir el ID único a los mensajes de confirmación
Si desea agregar su ID único a su mensaje de confirmación, deberá colocar el valor que se almacena dentro del Campo Oculto cuando se envía el formulario.
En nuestro formulario, el ID del campo era 6, como puede ver en la imagen anterior. Así que agregaremos esto a nuestro mensaje de confirmación para que extraiga ese mismo valor exacto.
{field_id="6"}

Ahora, cuando se envíe el formulario, tus visitantes verán el ID único y también se registrará dentro del Campo Oculto del formulario.

Preguntas frecuentes
P: ¿Qué pasa si quiero un número específico de caracteres para mi ID único?
R: Puedes ver que el siguiente ejemplo solo proporcionará un ID único de 6 dígitos (solo hexadecimal).
/*
* 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 );
Este fragmento tomará la hora actual, la convertirá en una cadena hexadecimal y la restringirá a un número de 6 caracteres.
P: ¿Puedo usar este fragmento para obtener un valor numérico solamente?
R: ¡Por supuesto! Puedes usar este fragmento que devolverá un valor numérico único entre 1 y 5.000.000.000. Usar este rango de números significará que obtendrás un número único de entre 1 y 10 dígitos. Si deseas reducir el número de dígitos generados, lo reflejarías en el 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 );
P: ¿Puedo anteponer un prefijo al ID único?
R: Absolutamente. Si deseas agregar un prefijo, puedes usar este fragmento.
/*
* 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 );
P: ¿Puedo controlar el número incrementando el contador?
R: Absolutamente. Sin embargo, si deseas incrementar el número, te recomendamos seguir esta útil guía en su lugar.
P: ¿Puedo usar el valor de un campo del formulario como prefijo del ID único?
R: Sí. El fragmento a continuación te permitirá usar un campo específico de tu formulario como prefijo para el ID único.
/*
* 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 );
Deberás reemplazar los valores de la variable $field_id con el ID del campo específico del formulario que deseas usar como prefijo. Además, reemplaza la variable $hidden_field_id con el ID del campo oculto con la etiqueta inteligente de ID único en tu formulario.
Y eso es todo lo que necesitas para crear un ID único para cada envío de formulario. ¿Te gustaría procesar una etiqueta inteligente dentro de las etiquetas de campo de Casilla de verificación? Prueba nuestro tutorial sobre Cómo procesar etiquetas inteligentes en etiquetas de casilla de verificación.