Elementor Pro Formular: Deutsches Datumsformat in E-Mails korrigieren
Das Problem
Viele WordPress-Nutzer, die Elementor Pro Formulare verwenden, kennen dieses Problem: Das Datumsfeld wird im Formular korrekt im deutschen Format angezeigt (z.B. 27.06.2025), aber in den empfangenen E-Mails erscheint das Datum plötzlich im amerikanischen Format (06/27/2025) oder als technisches Format (2025-06-27).
Dies kann besonders ärgerlich sein, wenn Sie professionelle Anfragen bearbeiten und das Datum für deutsche Kunden verwirrend dargestellt wird.
Die Ursache
Elementor Pro verwendet standardmäßig das HTML5 Date-Input-Element, welches intern immer das Format Y-m-d (Jahr-Monat-Tag) verwendet, unabhängig von der Anzeige im Browser. Beim Versenden der E-Mail wird dann dieses interne Format übernommen, anstatt des vom Nutzer gewünschten deutschen Formats.
Die Lösung: Vollständiger Code-Fix
Hier ist eine umfassende Lösung, die sowohl die Anzeige im Formular als auch das Format in den E-Mails korrigiert:
Schritt 1: Code-Installation
Option A: Mit dem Code Snippets Plugin (empfohlen)
- Installieren Sie das kostenlose Plugin “Code Snippets”
- Gehen Sie zu Snippets > Neu hinzufügen
- Fügen Sie den unten stehenden Code ein
- Titel: “Elementor Deutsches Datumsformat”
- Speichern & Aktivieren
Option B: In der functions.php
- Gehen Sie zu Design > Theme-Editor > functions.php
- Fügen Sie den Code am Ende der Datei hinzu
- Datei aktualisieren
Schritt 2: Der vollständige Code
// Elementor Pro: Deutsches Datumsformat für Formulare und E-Mails
add_action('wp_footer', function () {
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
// Flatpickr Konfiguration (falls Elementor es verwendet)
if (typeof flatpickr !== 'undefined') {
flatpickr.setDefaults({
dateFormat: "d.m.Y",
locale: {
firstDayOfWeek: 1, // Woche beginnt mit Montag
weekdays: {
shorthand: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
longhand: [
'Sonntag', 'Montag', 'Dienstag', 'Mittwoch',
'Donnerstag', 'Freitag', 'Samstag'
]
},
months: {
shorthand: [
'Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun',
'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'
],
longhand: [
'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
]
}
}
});
}
});
</script>
<?php
});
// Hook für E-Mail-Verarbeitung: Konvertiert Datum zu deutschem Format
add_action('elementor_pro/forms/new_record', function($record, $handler) {
$fields = $record->get('fields');
foreach ($fields as $field_id => $field) {
// Prüft alle Felder, die "datum" oder "date" im Namen haben
if ((stripos($field_id, 'datum') !== false || stripos($field_id, 'date') !== false)
&& !empty($field['value'])) {
$date_value = $field['value'];
$date = false;
// Versucht verschiedene Datumsformate zu parsen
$formats = ['Y-m-d', 'm/d/Y', 'd/m/Y', 'd.m.Y'];
foreach ($formats as $format) {
$parsed = DateTime::createFromFormat($format, $date_value);
if ($parsed && $parsed->format($format) === $date_value) {
$date = $parsed;
break;
}
}
// Konvertiert zu deutschem Format
if ($date) {
$german_date = $date->format('d.m.Y');
$record->update_field($field_id, 'value', $german_date);
}
}
}
}, 10, 2);
// Backup-Filter für E-Mail-Inhalt
add_filter('elementor_pro/forms/email_content', function($email_content, $record) {
$fields = $record->get('fields');
foreach ($fields as $field_id => $field) {
if ((stripos($field_id, 'datum') !== false || stripos($field_id, 'date') !== false)
&& !empty($field['value'])) {
$original_value = $field['value'];
// Parse das Datum
$date = DateTime::createFromFormat('Y-m-d', $original_value);
if (!$date) {
$date = DateTime::createFromFormat('m/d/Y', $original_value);
}
if ($date) {
$german_date = $date->format('d.m.Y');
// Ersetzt im E-Mail-Inhalt
$email_content = str_replace('[field id="' . $field_id . '"]', $german_date, $email_content);
$email_content = str_replace($original_value, $german_date, $email_content);
}
}
}
return $email_content;
}, 10, 2);
Anpassbare Datumsformate
Sie können das Datumsformat nach Ihren Wünschen anpassen. Hier sind die wichtigsten Optionen:
| Format | Beispiel | Beschreibung |
|---|---|---|
d.m.Y |
27.06.2025 | Standard deutsches Format |
l, d.m.Y |
Dienstag, 27.06.2025 | Mit Wochentag |
j.n.Y |
27.6.2025 | Ohne führende Nullen |
d/m/Y |
27/06/2025 | Mit Schrägstrichen |
d. F Y |
27. Juni 2025 | Mit ausgeschriebenem Monat |
Format-Variablen:
- d: Tag mit führender Null (01-31)
- j: Tag ohne führende Null (1-31)
- m: Monat mit führender Null (01-12)
- n: Monat ohne führende Null (1-12)
- Y: Jahr, 4-stellig (z.B. 2025)
- F: Monatsname ausgeschrieben (Januar-Dezember)
- l: Wochentag ausgeschrieben (Montag-Sonntag)
Zusätzliche Verbesserungen
1. Woche beginnt mit Montag
Der Code stellt automatisch ein, dass die Woche mit Montag beginnt (deutsche Konvention), anstatt mit Sonntag (amerikanische Konvention).
2. Deutsche Monatsnamen
Alle Monats- und Wochentagsnamen werden auf Deutsch angezeigt.
3. 24-Stunden-Format für Uhrzeiten
Falls Sie auch Uhrzeitfelder verwenden, können Sie zusätzlich das 24-Stunden-Format aktivieren:
add_action('wp_footer', function () {
?>
<script>
// 24-Stunden-Format für Zeitfelder
if (typeof flatpickr !== 'undefined') {
flatpickr('.elementor-time-field', {
enableTime: true,
noCalendar: true,
dateFormat: "H:i",
time_24hr: true
});
}
</script>
<?php
});
Fehlerbehebung
Problem: Code funktioniert nicht
Lösung: Prüfen Sie, ob:
- Das Code Snippets Plugin aktiv ist
- Keine Caching-Plugins den Code modifizieren
- Die Field-ID in Ihrem Formular korrekt ist (z.B. “Geburtsdatum”, “datum”, etc.)
Problem: Nur teilweise Funktionalität
Lösung: Löschen Sie den Browser-Cache und testen Sie in einem Inkognito-Fenster.
Problem: Format wird nicht übernommen
Lösung: Prüfen Sie die Field-ID in Ihrem Elementor-Formular. Der Code funktioniert automatisch für alle Felder, die “datum” oder “date” im Namen haben.
Fazit
Mit dieser Lösung erhalten Sie:
- ✅ Deutsches Datumsformat in Formularen (d.m.Y)
- ✅ Deutsches Datumsformat in E-Mails
- ✅ Deutsche Monats- und Wochentagsnamen
- ✅ Woche beginnt mit Montag
- ✅ Automatische Kompatibilität mit verschiedenen Field-IDs
Die Lösung funktioniert mit allen aktuellen Versionen von Elementor Pro und ist zukunftssicher programmiert.
Weiterführende Tipps
- Testen Sie die Lösung immer in einer Staging-Umgebung
- Erstellen Sie ein Backup vor Code-Änderungen
- Bei Theme-Updates bleibt der Code in Code Snippets erhalten
- Der Code ist kompatibel mit den meisten Caching-Plugins
Haben Sie noch Fragen oder Probleme mit der Implementierung? Hinterlassen Sie gerne einen Kommentar!