SCHRITT 1
Zuerst sollten Sie zwei separate Vorlagen erstellen (eine für jeden Schritt). In der ersten Vorlage sollten Sie ein Formular erstellen, das Benutzer E-Mail an die zweite Seite senden wird. Der Link sollte GET
Attribute haben, damit Sie seine E-Mail-Adresse und seinen Vornamen erhalten können. Hier ist ein Beispiel (beachten Sie, dass es verbessert werden kann):
<?php
/*
** Template Name: Step 1
*/
get_header();
if (!empty($_POST['firstname']) && !empty($_POST['email'])) {
$link = 'http://my-site/step-2';
$link = add_query_arg(
array(
'firstname' => $_POST['firstname'],
'email' => $_POST['email'],
),
$link
);
$subject = 'New user registration';
$message = 'Please click on the following link to complete your registration: ' . $link;
$headers = array('Content-Type: text/html; charset=UTF-8');
$result = wp_mail($_POST['email'], $subject, $message, $headers);
if ($result) {
$message = 'Please check your email address to complete the registration';
} else {
$message = 'Something went wrong. Please contact the administrator';
}
echo $message;
} else {
?>
<form method="POST" action="">
<input type="text" name="firstname" placeholder="First Name">
<input type="email" name="email" placeholder="Email address">
<input type="submit" value="Submit">
</form>
<?php
}
get_footer();
Wir erstellen eine einfache Prüfung, ob das Formular abgeschickt wird und alle Felder ausgefüllt sind. Wenn ja, können wir eine E-Mail senden 2. Schritt
SCHRITT 2
Wir werden eine eigene Vorlage erstellen, in dem wir die Daten aus ersten füllen $_GET
verwenden, und wir werden zwei hinzufügen neue Felder (Benutzername und Passwort), die leer sind.
<?php
/*
** Template Name: Step 2
*/
get_header();
if (!empty($_POST['firstname']) && !empty($_POST['email']) && !empty($_POST['password'])) {
$user_id = username_exists($_POST['username']);
if (!$user_id and email_exists($_POST['email']) == false) {
$user_id = wp_create_user($_POST['username'], $_POST['password'], $_POST['email']);
if ($user_id) {
update_user_meta($user_id, 'first_name', $_POST['firstname']);
$message = 'User has been created';
}
} else {
$message = 'User already exists!';
}
echo $message;
} else {
?>
<form method="POST" action="">
<input type="text" name="firstname" value="<?php echo (!empty($_GET['firstname'])) ? $_GET['firstname'] : '' ; ?>" placeholder="First Name">
<input type="email" name="email" value="<?php echo (!empty($_GET['email'])) ? $_GET['email'] : '' ; ?>" placeholder="Email Address">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Submit">
</form>
<?php
}
get_footer();
Wenn das zweite Formular abgeschickt wird, und alles ist in Ordnung, wir den Benutzer erstellen können. Sobald erstellt, können wir den Vornamen aktualisieren.
Sie können meinen Code unbegrenzt ändern, aber dies ist die Basis. Zum Beispiel können wir die Felder erforderlich machen, können wir die Stärke von Passwörtern überprüfen, die Namenslänge usw.
Bitte werfen Sie einen Blick auf meine Antwort http://stackoverflow.com/a/40959220/1960558. es ist wirklich lang, aber ich hoffe, dass Sie den Code auf gist leicht verstehen können: https://gist.github.com/avastamin/b49481968fd5f984c1e9bd51f91779b4 –