Um Contact Form 7 (CF7) als Registrier-Formular zu verwenden, kannst du eine benutzerdefinierte Funktion erstellen, die das Formular verarbeitet und den Benutzer basierend auf den eingegebenen Anmeldeinformationen anmeldet. Hier ist eine Schritt-für-Schritt-Anleitung, wie du das umsetzen kannst:
Schritt 1: Erstellen des CF7-Formulars
Erstelle zunächst ein neues Formular in Contact Form 7 mit den folgenden Feldern:
[text* username placeholder "Benutzername"]
[email* email placeholder "E-Mail-Adresse"]
[password* password placeholder "Passwort"]
[password* password_confirm placeholder "Passwort bestätigen"]
[submit "Registrieren"]
Schritt 2: PHP-Funktion zum Verarbeiten des Login-Vorgangs hinzufügen
Füge den folgenden Code in die functions.php deines Themes oder in ein benutzerdefiniertes Plugin ein, um das Formular zu verarbeiten und den Benutzer anzumelden:
function cf7_registration_form_processing_with_email($cf7) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$posted_data = $submission->get_posted_data();
// Prüfe, ob das richtige Formular gesendet wurde (ersetze FORM_ID mit der ID deines Formulars)
if ($cf7->id() == FORM_ID) {
$username = sanitize_text_field($posted_data['username']);
$email = sanitize_email($posted_data['email']);
$password = sanitize_text_field($posted_data['password']);
$password_confirm = sanitize_text_field($posted_data['password_confirm']);
// Validierung der Eingabedaten
if (username_exists($username) || email_exists($email)) {
$submission->set_status('validation_failed');
$submission->set_response('<div class="cf7-error">Benutzername oder E-Mail-Adresse ist bereits vergeben.</div>');
return;
}
if ($password !== $password_confirm) {
$submission->set_status('validation_failed');
$submission->set_response('<div class="cf7-error">Die Passwörter stimmen nicht überein.</div>');
return;
}
// Neuen Benutzer registrieren
$user_id = wp_create_user($username, $password, $email);
if (is_wp_error($user_id)) {
$submission->set_status('validation_failed');
$submission->set_response('<div class="cf7-error">Es gab einen Fehler bei der Registrierung. Bitte versuchen Sie es erneut.</div>');
} else {
// Automatisch einloggen
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
// Bestätigungsmail senden
$to = $email;
$subject = 'Willkommen bei ' . get_bloginfo('name');
$message = 'Hallo ' . $username . ",\n\n" . 'Danke für Ihre Registrierung bei ' . get_bloginfo('name') . ".\n\n" . 'Sie können sich jetzt mit Ihrem Benutzernamen und Passwort einloggen.' . "\n\n" . 'Viel Spaß!';
$headers = array('Content-Type: text/plain; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);
// Umleiten nach erfolgreicher Registrierung
wp_redirect(home_url());
exit;
}
}
}
}
add_action('wpcf7_before_send_mail', 'cf7_registration_form_processing_with_email');
Schritt 3: Ersetzen der Formular-ID
Ersetze FORM_ID im obigen Code durch die tatsächliche ID deines CF7-Formulars. Diese findest du im Backend von WordPress unter Contact Form 7 bei der Übersicht der Formulare.
Schritt 4: Optionales Styling
Du kannst den folgenden CSS-Code hinzufügen, um Fehlermeldungen oder andere Benachrichtigungen zu stylen:
.cf7-error {
color: red;
font-weight: bold;
margin: 10px 0;
}
Schritt 5: Verwendung des Formulars
Füge das Contact Form 7-Formular mithilfe des Shortcodes in eine Seite oder einen Beitrag ein:
Fehler: Kontaktformular wurde nicht gefunden.
Ersetze FORM_ID mit der tatsächlichen ID deines Formulars.
Zusammenfassung
Mit dieser Lösung kannst du Contact Form 7 als einfaches Registrierungsformular in WordPress verwenden. Die Benutzerregistrierungsdaten werden verarbeitet, und ein neuer Benutzer wird erstellt. Es werden verschiedene Überprüfungen durchgeführt, wie z. B. die Übereinstimmung der Passwörter und die Überprüfung, ob der Benutzername oder die E-Mail bereits existieren. Nach der erfolgreichen Registrierung wird der Benutzer automatisch eingeloggt und auf die Startseite weitergeleitet.
Diese Lösung kann weiter angepasst werden, indem du z.B. zusätzliche Felder für die Benutzerregistrierung hinzufügst oder eine Bestätigungsmail an den neuen Benutzer sendest.
