Resumo de IA
Gostaria de criar um ID único para cada uma das suas submissões de formulário? Dar a cada submissão de formulário um número de referência único pode facilitar o acompanhamento de qualquer função interna à qual possa querer referir-se mais tarde. Usando PHP e as Smart Tags do WPForms, pode conseguir isto facilmente. Neste tutorial, vamos guiá-lo através de cada passo.
Já existe uma Smart Tag padrão no WPForms que gera um valor único. No entanto, o propósito deste tutorial é controlar qual pode ser esse valor único, como limitá-lo apenas a números, adicionar um prefixo antes do ID único, etc. Para mais informações sobre a Smart Tag de Valor Único, consulte este guia útil.
Para este tutorial, vamos criar um formulário de suporte para os nossos visitantes. Cada submissão de suporte será atribuída a um ID único. Este será o número do seu ticket de suporte. Em seguida, armazenaremos esse número dentro da submissão num Campo Oculto.
Criação do ID Único
Normalmente começamos os nossos tutoriais criando o nosso formulário. No entanto, como queremos usar esta Smart Tag dentro do nosso construtor de formulários, começaremos por adicionar primeiro o trecho de código ao nosso site desta vez. Se precisar de alguma assistência com a adição de trechos de código ao seu site, 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 só criará o código de que necessitamos para construir um ID único com cada submissão de formulário, mas também nos permitirá usar este número como uma Smart Tag para que possamos anexá-lo às nossas submissões de formulário.
Criar o Seu Formulário
Em seguida, criaremos o nosso formulário de suporte. Este formulário conterá campos para Nome, Endereço de E-mail, um campo de Menu Suspenso para tentar capturar o problema e, finalmente, um campo de formulário de Texto de Parágrafo para permitir aos nossos visitantes um local para fornecer mais informações sobre o suporte que procuram. No entanto, como queremos armazenar este número como parte das nossas submissões, também adicionaremos um Campo Oculto para armazenar esse número de ID único também.
Após adicionar o Campo Oculto, clique nele para abrir o painel Opções do Campo. Em seguida, vá para a secção Opções Avançadas.
No Valor Padrão, simplesmente adicione a Smart Tag {unique_id}.

Adicionar o ID Único às Mensagens de Confirmação
Se desejar adicionar o seu ID único à sua mensagem de confirmação, terá de colocar o valor que é armazenado dentro do Campo Oculto quando o formulário for submetido.
No nosso formulário, o ID do campo era 6, como pode ver na imagem anterior. Por isso, adicionaremos isto à nossa mensagem de confirmação para que ele puxe exatamente o mesmo valor.
{field_id="6"}

Agora, quando o formulário for submetido, os seus visitantes verão o ID único, bem como o registo deste no Campo Oculto do formulário.

FAQ
P: E se eu quisesse um número específico de caracteres para o meu ID único?
R: Pode ver que o exemplo seguinte fornecerá apenas um ID único 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 irá obter a hora atual, convertê-la numa string hexadecimal e limitá-la a um número de 6 caracteres.
P: Posso usar este trecho para obter um valor apenas numérico?
R: Claro! Pode usar este trecho que retornará um valor numérico único entre os números de 1 – 5.000.000.000. Usar este intervalo de números significará que obterá um número único entre 1 e 10 dígitos. Se quiser reduzir o número de dígitos gerados, refletirá 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 único?
R: Absolutamente. Se desejar 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: Absolutamente. No entanto, se desejar incrementar o número, recomendamos seguir este guia útil em vez disso.
P: Posso usar o valor de um campo do formulário como prefixo do ID único?
R: Sim. O trecho abaixo permitir-lhe-á usar um campo específico do seu formulário como prefixo para o 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 );
Terá de substituir os valores da variável $field_id pelo ID do campo específico do formulário que 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 Único no seu formulário.
E é tudo o que precisa para criar um ID único para cada submissão de formulário. Gostaria de processar uma Smart Tag nos rótulos dos campos Checkbox? Experimente o nosso tutorial sobre Como Processar Smart Tags em Rótulos de Checkbox.