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

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 das Formular nun abgeschickt wird, sehen Ihre Besucher die eindeutige ID und sie wird im verborgenen Feld des Formulars gespeichert.

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