Attenzione!

Questo articolo contiene codice PHP ed è destinato agli sviluppatori. Offriamo questo codice come cortesia, ma non forniamo supporto per personalizzazioni del codice o sviluppo di terze parti.

Per ulteriore assistenza, consulta il tutorial di WPBeginner su come aggiungere codice personalizzato.

Chiudi

Creazione di un ID univoco per ogni voce del modulo

Desideri creare un ID univoco per ciascuna delle tue voci di modulo? Fornire a ciascuna voce di modulo un numero di riferimento univoco può facilitare il monitoraggio di qualsiasi funzione interna a cui potresti voler fare riferimento in seguito. Utilizzando PHP e gli Smart Tag di WPForms, puoi ottenerlo facilmente. In questo tutorial, ti guideremo attraverso ogni passaggio.

Esiste già uno Smart Tag predefinito in WPForms che genera un valore univoco. Tuttavia, lo scopo di questo tutorial è controllare quale sia tale valore univoco, ad esempio limitandolo solo ai numeri, aggiungendo un prefisso prima dell'ID univoco, ecc. Per ulteriori informazioni sullo Smart Tag Valore Univoco, consulta questa guida utile.

Per questo tutorial, creeremo un modulo di supporto per i nostri visitatori. A ogni invio di supporto verrà assegnato un ID univoco. Questo sarà il loro numero di ticket di supporto. Memorizzeremo quindi quel numero all'interno della voce in un Campo Nascosto.

Con qualsiasi cache del browser, cache del server o cache dei plugin, c'è la possibilità che questi ID univoci vengano duplicati.

Creazione dell'ID univoco

Di solito iniziamo i nostri tutorial creando il nostro modulo. Tuttavia, poiché vogliamo utilizzare questo Smart Tag all'interno del nostro costruttore di moduli, questa volta inizieremo aggiungendo prima lo snippet di codice al nostro sito. Se hai bisogno di assistenza nell'aggiungere snippet di codice al tuo sito, puoi leggere questo tutorial per aiuto.

/*
 * 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 );

Questo snippet non solo creerà il codice di cui abbiamo bisogno per creare un ID univoco con ogni invio del modulo, ma ci permetterà anche di utilizzare questo numero come Smart Tag in modo da poterlo allegare alle nostre voci di modulo.

Creazione del tuo modulo

Successivamente, creeremo il nostro modulo di supporto. Questo modulo conterrà campi per Nome, Indirizzo email, un campo a discesa per cercare di catturare il problema e, infine, un campo modulo Testo Paragrafo per consentire ai nostri visitatori un posto dove fornire ulteriori informazioni sul supporto che stanno cercando. Tuttavia, poiché vogliamo memorizzare questo numero come parte delle nostre voci, aggiungeremo anche un Campo Nascosto per memorizzare anche quel numero di ID univoco.

Se hai bisogno di aiuto per creare un modulo in WPForms, consulta questa documentazione.

Dopo aver aggiunto il Campo Nascosto, fai clic su di esso per aprire il pannello Opzioni Campo. Quindi, vai alla sezione Opzioni Avanzate.

Nel Valore Predefinito, aggiungi semplicemente lo Smart Tag {unique_id}.

Aggiungi il nuovo Smart Tag per assegnare l'ID univoco a ciascuna voce del modulo.

I campi nascosti non sono visibili all'interno del modulo ai tuoi visitatori, ma stiamo usando questo campo per memorizzare l'ID univoco per riferimento interno in modo che venga visualizzato nella voce.

Aggiunta dell'ID univoco ai messaggi di conferma

Se desideri aggiungere il tuo ID univoco al messaggio di conferma, dovrai inserire il valore memorizzato all'interno del Campo Nascosto quando il modulo viene inviato.

Nel nostro modulo, l'ID del campo era 6, come puoi vedere nell'immagine precedente. Quindi aggiungeremo questo al nostro messaggio di conferma in modo che recuperi esattamente lo stesso valore.

{field_id="6"}

Quando si utilizza l'ID univoco all'interno del messaggio di conferma, è necessario utilizzare l'ID del campo specificato all'interno del messaggio, come mostrato nell'immagine sottostante, e non lo Smart Tag effettivo.

Aggiungi lo Smart Tag univoco anche al messaggio di conferma

Se hai bisogno di aiuto per localizzare l'ID del tuo modulo o l'ID del campo del modulo, dai un'occhiata a questo tutorial.

Ora, quando il modulo viene inviato, i tuoi visitatori vedranno l'ID univoco, oltre ad essere registrato all'interno del Campo Nascosto del modulo.

Ora, quando il modulo viene inviato, i tuoi visitatori vedranno l'ID univoco, oltre ad essere registrato all'interno del Campo Nascosto del modulo.

FAQ

D: Cosa succede se desidero un numero specifico di caratteri per il mio ID univoco?

R: Puoi vedere che l'esempio seguente fornirà solo un ID univoco di 6 cifre (solo esadecimale).

/*
 * 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 );

Questo snippet prenderà l'ora corrente, la convertirà in una stringa esadecimale e la limiterà a un numero di 6 caratteri.

D: Posso usare questo snippet per ottenere un valore numerico?

R: Certo! Puoi usare questo snippet che restituirà un valore numerico univoco compreso tra 1 e 5.000.000.000. Utilizzare questo intervallo di numeri significherà che otterrai un numero univoco compreso tra 1 e 10 cifre. Se desideri ridurre il numero di cifre generate, dovresti rifletterlo in rand(1, 5000000000).

Ad esempio, se desiderassi solo un numero di 6 cifre, lo snippet sarebbe qualcosa come rand(100000, 999999), ma ciò aumenta la possibilità di ripetere i numeri alla fine poiché ci sono così tante combinazioni diverse che puoi usare con un limite di 6 cifre.

/*
 * 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 );

D: Posso aggiungere un prefisso all'ID univoco?

R: Assolutamente. Se desideri aggiungere un prefisso, puoi usare questo 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 );

D: Posso controllare il numero incrementando il conteggio?

R: Assolutamente. Tuttavia, se desideri incrementare il numero, ti consigliamo di seguire questa utile guida invece.

D: Posso usare il valore del campo del modulo come prefisso dell'ID univoco?

R: Sì. Lo snippet seguente ti consentirà di utilizzare un campo specifico del tuo modulo come prefisso per l'ID univoco.

/*
 * 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 );

Dovrai sostituire i valori della variabile $field_id con l'ID del campo specifico del modulo che desideri utilizzare per il prefisso. Inoltre, sostituisci la variabile $hidden_field_id con l'ID del campo Nascosto con lo Smart Tag dell'ID univoco sul tuo modulo.

E questo è tutto ciò che ti serve per creare un ID univoco per ogni invio del modulo. Desideri elaborare uno Smart Tag nelle etichette dei campi Checkbox? Prova il nostro tutorial su Come elaborare gli Smart Tag nelle etichette delle checkbox.

Filtri di riferimento