KI-Zusammenfassung
Möchten Sie Ihrem Formular-Datumsfeld Altersbeschränkungen hinzufügen? Diese Anleitung zeigt Ihnen, wie Sie das Alter überprüfen und benutzerdefinierte Meldungen anzeigen, wenn Daten nicht Ihren Anforderungen entsprechen. Wir demonstrieren dies anhand eines Anmeldeformulars für einen Ballett-Kinderkurs, das nur Kinder zwischen 12 und 18 Jahren akzeptiert.
Einrichtung Ihres Formulars
Erstellen Sie im ersten Schritt einfach ein neues Formular und fügen Sie Ihrem Formular ein Datum / Uhrzeit-Formularfeld hinzu.

Hinzufügen von Altersbeschränkungs-Validierungen
Um das Alter zu überprüfen und Fehlermeldungen unter dem Formularfeld anzuzeigen, fügen Sie diesen Code zu Ihrer Website hinzu. Wenn Sie nicht sicher sind, wie Sie benutzerdefinierten Code hinzufügen, lesen Sie bitte unsere Anleitung zum Hinzufügen von Code-Snippets.
/**
* Display an error message on submission of the form if the date doesn't fall within the guidelines.
*
* @link https://wpforms.com/developers/how-to-provide-an-age-restriction-on-the-datepicker-form-field/ *
*/
function wpf_dev_process( $fields, $entry, $form_data ) {
// Optional, you can limit to specific forms. Below, we restrict output to
// form #1000.
if ( absint( $form_data[ 'id' ] ) !== 1000 ) {
return $fields;
}
if ( isset( $fields[25][ 'value' ] ) && !empty( $fields[25][ 'value' ] ) ) {
$timestamp = strtotime( $fields[25][ 'value' ] );
if ($timestamp === false) {
// Invalid date format
wpforms()->process->errors[ $form_data[ 'id' ] ][ '25' ] = esc_html__( 'Invalid date format', 'plugin-domain' );
} else {
$birth_year = date('Y', $timestamp);
$current_year = date('Y');
$age = $current_year - $birth_year;
if ($age < 12 || $age > 18) {
// Show an error message at the top of the form and under the specific field
wpforms()->process->errors[ $form_data[ 'id' ] ][ '25' ] = esc_html__( 'Minimum age requirement is 12 and maximum age requirement is 18', 'plugin-domain' );
}
}
} else {
// Date field is empty
wpforms()->process->errors[ $form_data[ 'id' ] ][ '25' ] = esc_html__( 'Date field is required', 'plugin-domain' );
}
return $fields;
}
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
Stellen Sie sicher, dass Sie die Formular-ID (1000) und die Feld-ID (25) aktualisieren, damit sie zu Ihrem eigenen Formular passen. Wenn Sie Hilfe beim Auffinden dieser IDs benötigen, lesen Sie unsere Anleitung zum Auffinden von Formular- und Feld-IDs.
Mit diesem Code-Snippet wird eine Meldung unter dem Feld angezeigt, wenn das Senden-Button geklickt wird und die Daten die Altersbeschränkung nicht erfüllen.

Altersbeschränkung mit Wiederholungsfeldern verwenden
Wenn sich Ihr Datumsfeld innerhalb eines Wiederholungsfeldes befindet, verwenden Sie diese modifizierte Version:
/**
* Age restriction validation for Repeater fields
*/
function wpf_dev_process( $fields, $entry, $form_data ) {
if ( absint( $form_data[ 'id' ] ) !== 1000 ) {
return $fields;
}
foreach ( $fields as $field_id => $field ) {
if ( preg_match( '/^25(_\d+)?$/', $field_id ) ) {
if ( isset( $field[ 'value' ] ) && !empty( $field[ 'value' ] ) ) {
$timestamp = strtotime( $field[ 'value' ] );
if ( $timestamp === false ) {
wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'Invalid date format', 'plugin-domain' );
} else {
$birth_year = date('Y', $timestamp);
$current_year = date('Y');
$age = $current_year - $birth_year;
if ( $age < 12 || $age > 18 ) {
wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'Minimum age requirement is 12 and maximum age requirement is 18', 'plugin-domain' );
}
}
}
}
}
return $fields;
}
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
Verwendung des exakten Datumsvergleichs
Für eine genauere Altersüberprüfung, z. B. um sicherzustellen, dass Benutzer genau 18 Jahre oder älter sind:
/**
* Check if the user is 18 years or older using exact date comparison
*/
function wpf_dev_compare_dates( $fields, $entry, $form_data ) {
if ( absint( $form_data[ 'id' ] ) !== 1000 ) {
return $fields;
}
$age = 18;
$date_1 = $fields[25][ 'unix' ];
if( is_string( $date_1 ) ) {
$date_1 = strtotime( $date_1 );
}
if( time() - $date_1 < $age * 31536000 )
wpforms()->process->errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'Apologies, you need to be 18 or older to submit this form.', 'plugin-domain' );
}
add_action( 'wpforms_process', 'wpf_dev_compare_dates', 10, 3 );
Und das ist alles! Sie haben die Altersbeschränkung für Ihr Datumsfeld in Ihrem Formular erfolgreich implementiert. Möchten Sie als Nächstes das Datumsfeld auf andere Weise anpassen? Sehen Sie sich unser Tutorial zu Anpassen der Optionen für Datums-/Uhrzeitfelder für weitere Details an.