Tạo form reset mật khẩu WordPress Ngoài Front-end không cần Plugin

Tạo form reset mật khẩu WordPress Ngoài Front-end không cần Plugin

Khi lập trinh các Website mà có phần đăng nhập thì hẳn bạn sẽ thường gặp một bộ đôi quen thuộc là form đăng nhập và form quên mật khẩu luôn là hai chức năng không thể thiếu cho website. Và để làm những form reset mật khẩu ngoài font-end trong WordPress thì cũng khá là đơn giản bạn chỉ cần sử dụng plugin là xong nhưng việc này sẽ vô tình làm cho trang web của bạn trở nên nặng hơn do quá nhiều plugin và khó bảo trì hơn nên có thể bạn không thích việc xài plugin này chỉ cho chức năng reset mật khẩu mà thội. Hôm nay mình sẽ hướng dẫn các bạn tạo form reset mật khẩu WordPress ngoài Front-end mà không cần plugin.

// AJAX FOGOT
add_action( 'wp_ajax_forgotajax', 'forgotajax_init' );
add_action( 'wp_ajax_nopriv_forgotajax', 'forgotajax_init' );
function forgotajax_init() {
$email = (isset($_POST['usernamelog']))?esc_attr($_POST['usernamelog']) : '';
$email = trim($email);
$result ="";

$random_password = wp_generate_password( 12, false );
if (! is_email( $email )){
    $result ="NOT_EMAIL";
}
else if( ! email_exists( $email ) ) {
    $result ="NOT_HAVE_EMAIL";
}
else {
    $user = get_user_by( 'email', $email );
    $update_user = wp_update_user( array (
                    'ID' => $user->ID, 
                    'user_pass' => $random_password
                )
            );
            if( $update_user ) {
                $result ="CHANGE_SUCCES";   
                $to = $email;
                $subject = 'Mật khẩu mới của bạn';
                $sender = get_option('name');
                $message = 'Đây là mật khẩu mới của bạn: '.$random_password;

                $headers[] = 'MIME-Version: 1.0' . "rn";
                $headers[] = 'Content-type: text/html; charset=iso-8859-1' . "rn";
                $headers[] = "X-Mailer: PHP rn";
                $headers[] = 'From: '.$sender.' < '.$email.'>' . "rn";

                $mail = wp_mail( $to, $subject, $message, $headers );
                if( $mail ){
                    $result ="CHANGE_SUCCES";
                }

            } else {
                $result ="CHANGE_FAIL";   
            }
 }

wp_send_json_success($result);
die();
}
// END AJAX FOGOT

Trên đây là đoạn code đơn giản để bạn có thể tạo form quên mật khẩu ngoài Font-end mà bạn không cần phải cài bất cứ một plugin nào cả.