Erstellen einer eindeutigen ID für jeden Formulareintrag

Möchten Sie für jeden Ihrer Formulareinträge eine eindeutige ID erstellen? Wenn Sie jedem Formulareintrag eine eindeutige Referenznummer geben, können Sie jede interne Funktion, auf die Sie später Bezug nehmen möchten, leichter nachverfolgen. Mit PHP und WPForms Smart Tags können Sie dies leicht erreichen. In diesem Tutorial werden wir Sie durch die einzelnen Schritte führen.

Es gibt bereits ein Standard-Smart Tag in WPForms, das einen eindeutigen Wert erzeugt. Der Zweck dieses Tutorials ist es jedoch, zu kontrollieren, was dieser eindeutige Wert sein kann, wie z. B. die Begrenzung auf Zahlen, das Hinzufügen eines Präfixes vor der eindeutigen ID, usw. Weitere Informationen zum Smart-Tag "Eindeutiger Wert" finden Sie in diesem hilfreichen Leitfaden.

In diesem Tutorial werden wir ein Support-Formular für unsere Besucher erstellen. Jeder Supportanfrage wird eine eindeutige ID zugewiesen. Dies wird die Nummer des Support-Tickets sein. Diese Nummer wird dann innerhalb des Eintrags in einem verborgenen Feld gespeichert.

Beim Browser-Caching, Server-Caching oder Plugin-Caching besteht die Möglichkeit, dass sich diese eindeutigen IDs duplizieren.

Erstellen der eindeutigen ID

Normalerweise beginnen wir unsere Tutorials mit der Erstellung unseres Formulars. Da wir dieses Smart Tag jedoch in unserem Formularersteller verwenden möchten, fangen wir dieses Mal damit an, das Code-Snippet zu unserer Website hinzuzufügen. Wenn Sie Hilfe beim Hinzufügen von Code-Snippets zu Ihrer Website benötigen, können Sie dieses Tutorial lesen, um Hilfe zu erhalten.

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

Dieses Snippet erstellt nicht nur den Code, den wir benötigen, um eine eindeutige ID mit jeder Formularübermittlung zu erstellen, sondern ermöglicht es uns auch, diese Nummer als Smart Tag zu verwenden, so dass wir sie an unsere Formulareinträge anhängen können.

Ihr Formular erstellen

Als nächstes erstellen wir unser Support-Formular. Dieses Formular enthält Felder für den Namen, die E-Mail-Adresse, ein Dropdown-Feld, um das Problem zu erfassen, und schließlich ein Absatz-Text-Feld, in dem unsere Besucher weitere Informationen über die gesuchte Unterstützung eingeben können. Da wir diese Nummer jedoch als Teil unserer Einträge speichern möchten, fügen wir auch ein verstecktes Feld hinzu, um diese eindeutige ID-Nummer zu speichern.

Wenn Sie Hilfe bei der Erstellung eines Formulars in WPForms benötigen, lesen Sie bitte diese Dokumentation.

Nachdem Sie das verborgene Feld hinzugefügt haben, klicken Sie darauf, um das Feldoptionen-Panel zu öffnen. Gehen Sie dann zum Abschnitt Erweiterte Optionen.

Fügen Sie im Standardwert einfach das Smart Tag {unique_id} hinzu.

Fügen Sie das neue Smart Tag hinzu, um jedem Formulareintrag eine eindeutige ID zuzuweisen.

Ausgeblendete Felder sind innerhalb des Formulars für Ihre Besucher nicht sichtbar, aber wir verwenden dieses Feld, um die eindeutige ID als interne Referenz zu speichern, damit sie im Eintrag angezeigt wird.

Hinzufügen der eindeutigen ID zu Bestätigungsnachrichten

Wenn Sie Ihre eindeutige ID in Ihre Bestätigungsnachricht einfügen möchten, müssen Sie den Wert, der im verborgenen Feld gespeichert ist, beim Absenden des Formulars einfügen.

In unserem Formular war die Feld-ID 6, wie Sie auf dem vorherigen Bild sehen können. Wir fügen dies unserer Bestätigungsnachricht hinzu, damit sie genau denselben Wert enthält.

{field_id="6"}

Wenn Sie die eindeutige ID in der Bestätigungsnachricht verwenden, müssen Sie diese Feld-ID in der Nachricht verwenden, wie in der Abbildung unten zu sehen, und nicht das eigentliche Smart Tag.

Fügen Sie der Bestätigungsnachricht auch den eindeutigen ID Smart Tag hinzu

Wenn Sie Hilfe bei der Suche nach Ihrer Formular-ID oder Formularfeld-ID benötigen, lesen Sie bitte dieses Tutorial.

Wenn das Formular nun abgeschickt wird, sehen Ihre Besucher die eindeutige ID und sie wird im verborgenen Feld des Formulars gespeichert.

Wenn das Formular nun abgeschickt wird, sehen Ihre Besucher die eindeutige ID und sie wird im verborgenen Feld des Formulars aufgezeichnet.

FAQ

F: Was ist, wenn ich eine bestimmte Anzahl von Zeichen für meine eindeutige ID haben möchte?

A: Sie sehen, dass das folgende Beispiel nur eine 6-stellige (nur hexadezimale) eindeutige ID liefert.

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

Dieses Snippet erfasst die aktuelle Uhrzeit, wandelt sie dann in eine hexadezimale Zeichenkette um und beschränkt sie auf eine 6-stellige Zahl.

F: Kann ich dieses Snippet verwenden, um einen Wert zu erhalten, der nur numerisch ist?

A: Ja, natürlich! Sie können dieses Snippet verwenden, das einen eindeutigen numerischen Wert zwischen 1 und 5.000.000.000 zurückgibt. Wenn Sie diesen Zahlenbereich verwenden, erhalten Sie eine eindeutige Zahl mit 1 bis 10 Ziffern. Wenn Sie die Anzahl der generierten Ziffern verringern möchten, können Sie dies in der rand(1, 5000000000).

Wenn Sie zum Beispiel nur eine 6-stellige Zahl benötigen, würde das Snippet etwa so aussehen rand(100000, 999999)Dies erhöht jedoch die Wahrscheinlichkeit, dass sich Zahlen wiederholen, da es bei einer 6-stelligen Grenze so viele verschiedene Kombinationen gibt, die man verwenden kann.

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

F: Kann ich die eindeutige ID vorangestellt werden?

A: Auf jeden Fall. Wenn Sie ein Präfix hinzufügen möchten, können Sie dieses Snippet verwenden.

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

F: Kann ich die Anzahl durch Erhöhen der Zählung kontrollieren?

A: Auf jeden Fall. Wenn Sie die Zahl jedoch erhöhen möchten, empfehlen wir Ihnen, stattdessen diesen nützlichen Leitfaden zu befolgen.

F: Kann ich den Wert des Formularfelds als Präfix für die eindeutige ID verwenden?

A: Ja. Das folgende Snippet ermöglicht es Ihnen, ein bestimmtes Feld aus Ihrem Formular als Präfix für die eindeutige ID zu verwenden.

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

Sie müssen die Werte der Variablen $field_id mit der ID des spezifischen Formularfelds, das Sie für das Präfix verwenden möchten. Ersetzen Sie außerdem die Variable $hidden_field_id mit der ID des ausgeblendeten Feldes mit dem Smart Tag Unique ID in Ihrem Formular.

Und das ist alles, was Sie brauchen, um eine eindeutige ID für jede Formularübermittlung zu erstellen. Möchten Sie ein Smart Tag in Checkbox-Feldbeschriftungen verarbeiten? Probieren Sie unser Tutorial über die Verarbeitung von Smart Tags in Checkbox-Labels aus.

Referenz-Filter