Đăng nhập và Đăng ký WordPress bằng Ajax không cần Plugin

Đăng nhập và đăng ký người dùng là những tính năng quan trọng trên bất kỳ website WordPress nào. Sử dụng Ajax cho phép thực hiện các thao tác này mượt mà, không cần tải lại trang, mang đến trải nghiệm người dùng tốt hơn. Bài viết này sẽ hướng dẫn bạn cách tạo form đăng nhập và đăng ký WordPress bằng Ajax mà không cần sử dụng plugin.

Khởi tạo Action cho Đăng nhập và Đăng xuất

Đầu tiên, cần xác định xem người dùng đã đăng nhập hay chưa để khởi tạo action tương ứng. Nếu chưa đăng nhập, sẽ khởi tạo action cho đăng nhập và đăng ký. Nếu đã đăng nhập, sẽ khởi tạo action cho đăng xuất.

if (!is_user_logged_in()) {
  add_action('init', 'ajax_login_init');
} else {
  add_action('init', 'ajax_logout_init');
}

function ajax_login_init() {
  add_action('wp_ajax_nopriv_ajax_login', 'ajax_login');
  add_action('wp_ajax_nopriv_ajax_register', 'ajax_register');
}

function ajax_logout_init() {
  add_action('wp_ajax_ajax_logout', 'ajax_logout');
}

Hàm Đăng nhập (ajax_login)

Hàm ajax_login xử lý yêu cầu đăng nhập từ phía client. Nó kiểm tra nonce để đảm bảo tính bảo mật, lấy thông tin đăng nhập từ $_POST, sử dụng hàm wp_signon() để đăng nhập và trả về kết quả dưới dạng JSON.

function ajax_login() {
  check_ajax_referer('ajax-login-nonce', 'security');
  $info = array();
  $info['user_login'] = $_POST['login_username'];
  $info['user_password'] = $_POST['login_password'];
  $info['remember'] = $_POST['remember'];
  $user_signon = wp_signon($info, false);
  if (is_wp_error($user_signon)) {
    wp_send_json(array('status' => 0, 'message' => $user_signon->get_error_message()));
  } else {
    wp_send_json(array('status' => 1, 'message' => __('Bạn đã đăng nhập thành công.'))); 
  }
}

Hàm Đăng ký (ajax_register)

Hàm ajax_register xử lý việc đăng ký người dùng mới. Tương tự như hàm đăng nhập, nó cũng kiểm tra nonce, lấy thông tin từ $_POST, sử dụng wp_insert_user() để tạo người dùng mới, thêm user meta (nếu cần) và trả về kết quả.

function ajax_register() {
  check_ajax_referer('ajax-register-nonce', 'security');
  $username = sanitize_text_field($_POST['register_username']);
  // ... (các biến khác)
  $userdata = array(
    'user_login' => $username,
     // ... (các trường dữ liệu khác)
  );
  $user_id = wp_insert_user($userdata);
  // ... (thêm user meta)
  if (!is_wp_error($user_id)) {
    // ... (đăng nhập người dùng sau khi đăng ký thành công)
  } else {
    wp_send_json(array('status' => 0, 'message' => __($user_id->get_error_message())));
  }
}

Hàm Đăng xuất (ajax_logout)

Hàm ajax_logout xử lý yêu cầu đăng xuất. Nó kiểm tra nonce, sử dụng wp_logout() để đăng xuất người dùng và chuyển hướng về trang chủ.

function ajax_logout() {
  check_ajax_referer('ajax-logout-nonce', 'ajaxsecurity');
  wp_logout();
  wp_redirect(home_url());
  exit();
}

Việc xây dựng form đăng nhập và đăng ký bằng Ajax không cần plugin mang lại sự linh hoạt và kiểm soát. Hy vọng bài viết này giúp bạn hiểu rõ hơn về cách thực hiện. Bạn cần có kiến thức về lập trình PHP và JavaScript để tùy chỉnh và tích hợp vào website của mình.

Comments

No comments yet. Why don’t you start the discussion?

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *