Resumo de IA
Você gostaria de criar um ID exclusivo para cada um dos seus envios de formulário? Dar a cada envio de formulário um número de referência exclusivo pode facilitar o rastreamento de qualquer função interna à qual você possa querer se referir mais tarde. Usando PHP e Smart Tags do WPForms, você pode conseguir isso facilmente. Neste tutorial, vamos guiá-lo por cada etapa.
Já existe uma Smart Tag padrão no WPForms que gera um valor exclusivo. No entanto, o objetivo deste tutorial é controlar qual pode ser esse valor exclusivo, como limitá-lo apenas a números, adicionar um prefixo antes do ID exclusivo, etc. Para mais informações sobre a Smart Tag de Valor Exclusivo, consulte este guia útil.
Para este tutorial, criaremos um formulário de suporte para nossos visitantes. Cada envio de suporte receberá um ID exclusivo. Este será o número do ticket de suporte deles. Em seguida, armazenaremos esse número na entrada em um Campo Oculto.
Criando o ID Exclusivo
Geralmente começamos nossos tutoriais criando nosso formulário. No entanto, como queremos usar esta Smart Tag dentro do nosso construtor de formulários, começaremos adicionando o trecho de código ao nosso site primeiro desta vez. Se precisar de alguma ajuda para adicionar trechos de código ao seu site, você pode ler este tutorial para obter ajuda.
/*
* 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 trecho não apenas criará o código que precisamos para construir um ID exclusivo a cada envio de formulário, mas também nos permitirá usar esse número como uma Smart Tag para que possamos anexá-lo às nossas entradas de formulário.
Criando Seu Formulário
Em seguida, criaremos nosso formulário de suporte. Este formulário conterá campos para Nome, Endereço de E-mail, um campo de Suspenso para tentar capturar o problema e, finalmente, um campo de formulário de Texto de Parágrafo para permitir que nossos visitantes tenham um local para fornecer mais informações sobre o suporte que estão procurando. No entanto, como queremos armazenar esse número como parte de nossas entradas, também adicionaremos um Campo Oculto para armazenar esse número de ID exclusivo também.
Após adicionar o Campo Oculto, clique nele para abrir o painel Opções de Campo. Em seguida, vá para a seção Opções Avançadas.
No Valor Padrão, simplesmente adicione a Smart Tag {unique_id}.

Adicionando o ID Exclusivo às Mensagens de Confirmação
Se você quiser adicionar seu ID exclusivo à sua mensagem de confirmação, precisará colocar o valor que está armazenado dentro do Campo Oculto quando o formulário for enviado.
Em nosso formulário, o ID do campo era 6, como você pode ver na imagem anterior. Portanto, adicionaremos isso à nossa mensagem de confirmação para que ele puxe exatamente o mesmo valor.
{field_id="6"}

Agora, quando o formulário for enviado, seus visitantes verão o ID exclusivo, bem como ele sendo registrado dentro do Campo Oculto do formulário.

Perguntas Frequentes
P: E se eu quisesse um número específico de caracteres para meu ID exclusivo?
R: Você pode ver que o exemplo a seguir fornecerá apenas um ID exclusivo de 6 dígitos (apenas 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 trecho pegará a hora atual, a converterá em uma string hexadecimal e a restringirá a um número de 6 caracteres.
P: Posso usar este trecho para obter um valor apenas numérico?
R: Claro! Você pode usar este trecho que retornará um valor numérico exclusivo entre os números de 1 a 5.000.000.000. Usar essa faixa de números significará que você terá um número exclusivo entre 1 e 10 dígitos. Se você quiser reduzir o número de dígitos gerados, você refletiria isso em 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: Posso adicionar um prefixo ao ID exclusivo?
R: Com certeza. Se você quiser adicionar um prefixo, pode usar este trecho.
/*
* 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: Posso controlar o número incrementando a contagem?
R: Com certeza. No entanto, se você quiser incrementar o número, recomendamos seguir este guia útil em vez disso.
P: Posso usar o valor do campo do formulário como prefixo do ID exclusivo?
R: Sim. O trecho abaixo permitirá que você use um campo específico do seu formulário como prefixo para o ID exclusivo.
/*
* 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 );
Você precisará substituir os valores da variável $field_id pelo ID do campo específico do formulário que você gostaria de usar como prefixo. Além disso, substitua a variável $hidden_field_id pelo ID do campo Oculto com a Smart Tag de ID Exclusivo em seu formulário.
E é tudo o que você precisa para criar um ID exclusivo para cada envio de formulário. Gostaria de processar uma Smart Tag dentro dos rótulos do campo Checkbox? Experimente nosso tutorial sobre Como Processar Smart Tags em Rótulos de Checkbox.