为忘记密码创建自定义模板,并使用主题功能将忘记密码页面链接添加到WordPress登录页面。php。请参阅下面给出的代码,并根据需要修改条件。
<?php
/*
* Template Name: Forgot Password
*/
global $wpdb;
$error = \'\';
$success = \'\';
// check if we\'re in reset form
if( isset( $_POST[\'action\'] ) && \'reset\' == $_POST[\'action\'] )
{
$user_info = trim($_POST[\'user_login\']);
$user_by_email = get_user_by( \'email\', $user_info );
$user_by_username = get_user_by( \'login\', $user_info );
if( !empty( $user_by_email ) || !empty( $user_by_username ) ) {
$valid_user = true;
} else {
$valid_user = false;
}
if( !$valid_user ) {
$error = \'There is no user registered with that username or email address.\';
} else {
$random_password = wp_generate_password( 12, false );
$user = get_user_by( \'email\', $email );
$update_user = wp_update_user( array (
\'ID\' => $user->ID,
\'user_pass\' => $random_password
)
);
// if update user return true then lets send user an email containing the new password
if( $update_user ) {
$to = $email;
$subject = \'Your new password\';
$sender = get_option(\'name\');
$message = \'Your new password is: \'.$random_password;
$headers[] = \'MIME-Version: 1.0\' . "\\r\\n";
$headers[] = \'Content-type: text/html; charset=iso-8859-1\' . "\\r\\n";
$headers[] = "X-Mailer: PHP \\r\\n";
$headers[] = \'From: \'.$sender.\' < \'.$email.\'>\' . "\\r\\n";
$mail = wp_mail( $to, $subject, $message, $headers );
if( $mail )
$success = \'Check your email address for you new password.\';
} else {
$error = \'Oops something went wrong updaing your account.\';
}
}
if( ! empty( $error ) )
echo \'<div class="message"><p class="error"><strong>ERROR:</strong> \'. $error .\'</p></div>\';
if( ! empty( $success ) )
echo \'<div class="error_login"><p class="success">\'. $success .\'</p></div>\';
}
?>
<form method="post">
<fieldset>
<p>Please enter your username or email address. You will receive a link to create a new password via email.</p>
<p><label for="user_login">Username or E-mail:</label>
<?php $user_login = isset( $_POST[\'user_login\'] ) ? $_POST[\'user_login\'] : \'\'; ?>
<input type="text" name="user_login" id="user_login" value="<?php echo $user_login; ?>" /></p>
<p>
<input type="hidden" name="action" value="reset" />
<input type="submit" value="Get New Password" class="button" id="submit" />
</p>
</fieldset>
</form>
并添加下面给出的代码以更改忘记密码页面链接。
add_filter( \'lostpassword_url\', \'my_lost_password_page\', 10, 2 );
function my_lost_password_page( $lostpassword_url, $redirect ) {
return \'your custom page link\';
}