Um einen Eintrag aus Contact Form 7 als Event in WordPress zu speichern, musst du das Formular so anpassen, dass die Eingabedaten automatisch als „Event“ gespeichert werden. Dies ist besonders nützlich, wenn du beispielsweise eine Veranstaltungsliste oder einen Kalender verwalten möchtest.
Hier ist ein Überblick, wie du das umsetzen kannst:
Schritt 1: Anlegen des benutzerdefinierten Beitragstyps „Event“
Zunächst musst du sicherstellen, dass es einen benutzerdefinierten Beitragstyp für Events gibt. Falls dieser noch nicht existiert, kannst du ihn über die functions.php deines Child-Themes hinzufügen:
function create_event_post_type() {
register_post_type('event',
array(
'labels' => array(
'name' => __('Events'),
'singular_name' => __('Event')
),
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'custom-fields'),
'menu_icon' => 'dashicons-calendar-alt',
)
);
}
add_action('init', 'create_event_post_type');
Dieser Code registriert einen neuen Beitragstyp namens „Event“.
Schritt 2: Contact Form 7 Hook verwenden, um Eintrag als Event zu speichern
Contact Form 7 bietet verschiedene Hooks, mit denen du auf Formular-Einreichungen reagieren kannst. Der Hook wpcf7_before_send_mail ist ideal, um zusätzliche Aktionen auszuführen, bevor die E-Mail versendet wird.
Füge den folgenden Code in die functions.php deines Child-Themes ein:
function save_cf7_submission_as_event($contact_form) {
// Formular ID überprüfen, um sicherzustellen, dass nur das spezifische Formular verarbeitet wird
$form_id = 123; // Ersetze dies durch deine tatsächliche Formular-ID
if ($contact_form->id() != $form_id) {
return;
}
// Hole die gesendeten Daten
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = $submission->get_posted_data();
// Lege den neuen Event-Beitrag an
$new_event = array(
'post_title' => sanitize_text_field($data['your-name']), // Ersetze 'your-name' mit deinem Feldnamen
'post_content' => sanitize_textarea_field($data['your-message']), // Ersetze 'your-message' mit deinem Feldnamen
'post_type' => 'event',
'post_status' => 'publish',
);
// Speichere den Beitrag und erhalte die ID
$post_id = wp_insert_post($new_event);
// Füge benutzerdefinierte Felder hinzu
if ($post_id) {
update_post_meta($post_id, 'event_date', sanitize_text_field($data['your-date'])); // Ersetze 'your-date'Schritt 3: Formularfelder anpassen
Stelle sicher, dass dein Contact Form 7 die entsprechenden Felder enthält, die du als Event-Daten speichern möchtest. Ein Beispielformular könnte so aussehen: mit deinem Feldnamen
update_post_meta($post_id, 'event_location', sanitize_text_field($data['your-location'])); // Ersetze 'your-location' mit deinem Feldnamen
}
}
}
add_action('wpcf7_before_send_mail', 'save_cf7_submission_as_event');
Schritt 3: Formularfelder anpassen
Stelle sicher, dass dein Contact Form 7 die entsprechenden Felder enthält, die du als Event-Daten speichern möchtest. Ein Beispielformular könnte so aussehen:
[text* your-name "Name des Events"]
[date* your-date "Datum des Events"]
[text* your-location "Ort des Events"]
[textarea your-message "Beschreibung des Events"]
[submit "Event speichern"]
Erklärung des Codes
$form_id: Ersetze123mit der ID deines Contact Form 7 Formulars, das du überwachen möchtest.sanitize_text_fieldundsanitize_textarea_field: Diese Funktionen sorgen dafür, dass die Benutzereingaben sicher verarbeitet und gespeichert werden.wp_insert_post: Erstellt einen neuen Beitrag (in diesem Fall ein Event) mit den übergebenen Daten.update_post_meta: Fügt benutzerdefinierte Felder wie das Datum und den Ort des Events hinzu.
Schritt 4: Testen
- Erstelle ein neues Event über das Formular und sende es ab.
- Überprüfe im WordPress-Dashboard unter „Events“, ob der Eintrag korrekt erstellt wurde.
Zusammenfassung
Mit diesem Setup kannst du Einträge aus Contact Form 7 automatisch als Event in WordPress speichern. Dadurch kannst du Formulareingaben direkt in deinem Event-Management nutzen, was besonders praktisch ist, wenn du Veranstaltungen organisierst und verwaltest. Achte darauf, das Setup gründlich zu testen und sicherzustellen, dass die Daten korrekt verarbeitet werden.
