KI-Zusammenfassung
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.
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.
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.

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