Você gostaria de criar um ID exclusivo para cada entrada de formulário? Dar a cada entrada de formulário um número de referência exclusivo pode facilitar o rastreamento de qualquer função interna que você queira consultar posteriormente. Usando PHP e WPForms Smart Tags, você pode conseguir isso facilmente. Neste tutorial, vamos orientá-lo em cada etapa.
Já existe uma Smart Tag padrão no WPForms que gerará um valor exclusivo. No entanto, o objetivo deste tutorial é controlar o que esse valor exclusivo pode ser, como limitá-lo apenas a números, adicionar um prefixo antes do ID exclusivo etc. Para obter mais informações sobre a tag inteligente Unique Value, consulte este guia útil.
Para este tutorial, criaremos um formulário de suporte para nossos visitantes. Cada envio de suporte receberá um ID exclusivo. Esse será o número do tíquete de suporte. Em seguida, armazenaremos esse número dentro da entrada em um campo oculto.
Criação do ID exclusivo
Normalmente, começamos nossos tutoriais criando nosso formulário. No entanto, como queremos usar essa Smart Tag em nosso construtor de formulários, desta vez começaremos adicionando o snippet de código ao nosso site. Se precisar de ajuda para adicionar snippets de código ao seu site, leia 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 );
Esse snippet não só criará o código de que precisamos para criar um ID exclusivo para cada envio de formulário, mas também nos permitirá usar esse número como uma Smart Tag para que possamos anexá-lo às entradas do formulário.
Criando seu formulário
Em seguida, criaremos nosso formulário de suporte. Esse formulário conterá campos para nome, endereço de e-mail, um campo suspenso para tentar capturar o problema e, por fim, um campo de formulário de texto de parágrafo para permitir que os visitantes forneçam mais informações sobre o suporte que estão buscando. 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.
Depois de adicionar o Hidden Field (Campo oculto), clique nele para abrir o painel Field Options (Opções de campo ). Em seguida, vá para a seção Advanced Options (Opções avançadas ).
No Default Value, basta adicionar a Smart Tag {unique_id}.

Adição da ID exclusiva às mensagens de confirmação
Se quiser adicionar seu ID exclusivo à mensagem de confirmação, você precisará colocar o valor que é armazenado no campo oculto quando o formulário é 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 ela extraia exatamente o mesmo valor.
{field_id="6"}

Agora, quando o formulário for enviado, seus visitantes verão a ID exclusiva e ela será registrada no campo oculto do formulário.

PERGUNTAS FREQUENTES
P: E se eu quiser um número específico de caracteres para minha ID exclusiva?
R: Você pode ver que o exemplo a seguir fornecerá apenas uma ID exclusiva de 6 dígitos (somente 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 );
Esse snippet pegará a hora atual, depois a converterá em uma cadeia hexadecimal e a restringirá a um número de 6 caracteres.
P: Posso usar esse snippet para obter um valor somente numérico?
A: Claro que sim! Você pode usar este snippet que retornará um valor numérico exclusivo entre os números de 1 a 5.000.000.000. Usar esse intervalo de números significa que você terá um número exclusivo entre 1 e 10 dígitos. Se quiser reduzir o número de dígitos gerados, você deve refletir isso no 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 prefixar a ID exclusiva?
R: Sem dúvida. Se quiser adicionar um prefixo, você pode usar este snippet.
/*
* 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: Sem dúvida. No entanto, se você quiser incrementar o número, recomendamos seguir este guia útil.
P: Posso usar o valor do campo do formulário como o prefixo da ID exclusiva?
R: Sim. O snippet 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 de $field_id
com o ID do campo de formulário específico que você gostaria de usar para o prefixo. Além disso, substitua a variável $hidden_field_id
com a ID do campo oculto com a Smart Tag de ID exclusiva em seu formulário.
E isso é tudo o que você precisa para criar um ID exclusivo para cada envio de formulário. Você gostaria de processar uma Smart Tag dentro de rótulos de campo Checkbox? Experimente nosso tutorial sobre Como processar Smart Tags em rótulos de caixa de seleção.