Atenção!

Este artigo contém código PHP e destina-se a desenvolvedores. Oferecemos este código como uma cortesia, mas não fornecemos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação extra, consulte o tutorial do WPBeginner sobre como adicionar código personalizado.

Dispensar

Criando um ID exclusivo para cada envio de formulário

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.

Com qualquer cache de navegador, cache de servidor ou cache de plugin, há uma chance de esses IDs exclusivos serem duplicados.

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.

Se precisar de ajuda para criar um formulário no WPForms, consulte esta documentação.

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}.

Adicione a nova Smart Tag para atribuir o ID exclusivo a cada entrada do formulário.

Campos ocultos não são visíveis no formulário para seus visitantes, mas estamos usando este campo para armazenar o ID exclusivo para referência interna, de modo que ele seja exibido na entrada.

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"}

Ao usar o ID exclusivo dentro da mensagem de confirmação, você deve usar o ID deste campo dentro da mensagem, como visto na imagem abaixo, e não a Smart Tag real.

Adicione a Smart Tag de ID exclusivo à mensagem de confirmação também

Se precisar de ajuda para localizar o ID do seu formulário ou o ID de um campo do formulário, consulte este tutorial.

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.

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).

Por exemplo, se você quisesse apenas um número de 6 dígitos, o trecho seria algo como rand(100000, 999999), mas isso aumenta a possibilidade de repetição de números eventualmente, já que existem tantas combinações diferentes que você pode usar com um limite de 6 dígitos.

/*
 * 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.

Filtros de Referência