Achtung!

Dieser Artikel enthält PHP-Code und richtet sich an Entwickler. Wir stellen diesen Code als Service zur Verfügung, bieten jedoch keine Unterstützung für Codeanpassungen oder die Entwicklung durch Dritte.

Für zusätzliche Hilfe siehe das Tutorial von WPBeginner zum Hinzufügen von benutzerdefiniertem Code.

Schließen

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 verweisen möchten, leichter verfolgen. Mit PHP und den WPForms Smart Tags können Sie dies ganz einfach erreichen. In diesem Tutorial führen wir Sie durch jeden Schritt.

Es gibt bereits einen Standard-Smart-Tag in WPForms, der einen eindeutigen Wert generiert. Der Zweck dieses Tutorials ist es jedoch, zu steuern, wie dieser eindeutige Wert aussehen kann, z. B. ihn auf Zahlen zu beschränken, ein Präfix vor der eindeutigen ID hinzuzufügen usw. Weitere Informationen zum Unique Value Smart Tag finden Sie in diesem hilfreichen Leitfaden.

Für dieses Tutorial erstellen wir ein Support-Formular für unsere Besucher. Jede Support-Einreichung erhält eine eindeutige ID. Dies ist ihre Support-Ticket-Nummer. Wir speichern diese Nummer dann im Eintrag in einem versteckten Feld.

Bei jeglicher Browser-Zwischenspeicherung, Server-Zwischenspeicherung oder Plugin-Zwischenspeicherung besteht die Möglichkeit, dass diese eindeutigen IDs dupliziert werden.

Erstellen der eindeutigen ID

Normalerweise beginnen wir unsere Tutorials mit der Erstellung unseres Formulars. Da wir diesen Smart Tag jedoch in unserem Formular-Builder verwenden möchten, beginnen wir diesmal damit, den Code-Snippet zuerst 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.

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

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

Erstellen Ihres Formulars

Als Nächstes erstellen wir unser Support-Formular. Dieses Formular enthält Felder für Name, E-Mail-Adresse, ein Dropdown-Feld, um das Problem zu erfassen, und schließlich ein Absatztext-Formularfeld, das unseren Besuchern Platz bietet, um weitere Informationen zu dem von ihnen gesuchten Support zu geben. Da wir diese Nummer jedoch als Teil unserer Einträge speichern möchten, werden wir auch ein verstecktes Feld hinzufügen, um diese eindeutige ID-Nummer ebenfalls zu speichern.

Wenn Sie Hilfe beim Erstellen eines Formulars in WPForms benötigen, sehen Sie bitte diese Dokumentation an.

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

Geben Sie im Feld Standardwert einfach den Smart Tag {unique_id} ein.

Fügen Sie den neuen Smart Tag hinzu, um jedem Formulareintrag die eindeutige ID zuzuweisen.

Versteckte Felder sind für Ihre Besucher im Formular nicht sichtbar, aber wir verwenden dieses Feld, um die eindeutige ID für interne Referenzzwecke zu speichern, damit sie im Eintrag angezeigt wird.

Hinzufügen der eindeutigen ID zu Bestätigungsnachrichten

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

In unserem Formular war die Feld-ID 6, wie Sie im vorherigen Bild sehen können. Wir werden dies also unserer Bestätigungsnachricht hinzufügen, damit sie genau denselben Wert abruft.

{field_id="6"}

Wenn Sie die eindeutige ID innerhalb der Bestätigungsnachricht verwenden, müssen Sie diese Feld-ID innerhalb der Nachricht verwenden, wie in der folgenden Abbildung gezeigt, und nicht den tatsächlichen Smart Tag.

Fügen Sie die eindeutige ID Smart Tag auch der Bestätigungsnachricht hinzu

Wenn Sie Hilfe beim Auffinden Ihrer Formular-ID oder Formularfeld-ID benötigen, sehen Sie sich dieses Tutorial an.

Wenn das Formular nun gesendet wird, sehen Ihre Besucher die eindeutige ID, und sie wird auch im Hidden Field des Formulars aufgezeichnet.

Wenn das Formular nun gesendet wird, sehen Ihre Besucher die eindeutige ID, und sie wird auch im Hidden Field 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 );

Dieser Ausschnitt erfasst die aktuelle Zeit, wandelt sie dann in eine hexadezimale Zeichenfolge um und beschränkt sie auf eine 6-stellige Zahl.

F: Kann ich diesen Ausschnitt verwenden, um einen rein numerischen Wert zu erhalten?

A: Natürlich! Sie können diesen Ausschnitt verwenden, der einen eindeutigen numerischen Wert zwischen 1 und 5.000.000.000 zurückgibt. Die Verwendung dieses Zahlenbereichs bedeutet, dass Sie am Ende eine eindeutige Zahl haben, die zwischen 1 und 10 Ziffern liegt. Wenn Sie die Anzahl der generierten Ziffern reduzieren möchten, würden Sie dies in rand(1, 5000000000) widerspiegeln.

Wenn Sie beispielsweise nur eine 6-stellige Zahl wünschen, wäre der Ausschnitt etwas wie rand(100000, 999999), aber dies erhöht die Möglichkeit von Wiederholungen von Zahlen, da es so viele verschiedene Kombinationen gibt, die Sie mit einer 6-stelligen Grenze verwenden können.

/*
 * 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 der eindeutigen ID ein Präfix voranstellen?

A: Absolut. Wenn Sie ein Präfix hinzufügen möchten, können Sie diesen Ausschnitt 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 Nummer steuern, indem ich die Zählung erhöhe?

A: Absolut. Wenn Sie die Nummer jedoch erhöhen möchten, empfehlen wir, stattdessen dieser nützlichen Anleitung zu folgen.

F: Kann ich den Wert des Formularfelds als Präfix der eindeutigen ID verwenden?

A: Ja. Der folgende Ausschnitt 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 durch die ID des spezifischen Formularfelds ersetzen, das Sie für das Präfix verwenden möchten. Ersetzen Sie außerdem die Variable $hidden_field_id durch die ID des Hidden-Felds mit dem Unique ID Smart Tag in Ihrem Formular.

Und das ist alles, was Sie brauchen, um für jede Formularübermittlung eine eindeutige ID zu erstellen. Möchten Sie einen Smart Tag in Checkbox-Feld-Labels verarbeiten? Probieren Sie unser Tutorial unter So verarbeiten Sie Smart Tags in Checkbox-Labels.

Referenzfilter