for find out and init actions
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');
}
login function
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' => __('you currectly logined')));;
}
}
register function
function ajax_register()
{
check_ajax_referer('ajax-register-nonce', 'security');
// Post values
$username = sanitize_text_field($_POST['register_username']);
$password = sanitize_text_field($_POST['register_password']);
$email = sanitize_text_field($_POST['register_email']);
$name = sanitize_text_field($_POST['register_name']);
$nick = sanitize_text_field($_POST['register_name']);
$userdata = array(
'user_login' => $username,
'user_pass' => $password,
'user_password' => $password,
'user_email' => $email,
'first_name' => $name,
'nickname' => $nick,
);
$user_id = wp_insert_user($userdata);
// add user meta
$custom_user_meta_value = 'custom_user_meta_value';
add_user_meta( $user_id, 'custom_user_meta', $custom_user_meta_value);
// Return
if (!is_wp_error($user_id)) {
$user_signon = wp_signon($userdata, false);
if (!is_wp_error($user_signon)) {
wp_send_json(array('status' => 2, 'message' => __('your registration is successfuled and logined.')));
} else {
wp_send_json(array('status' => 1, 'message' => __('your registration is successfuled and logined')));
}
} else {
wp_send_json(array('status' => 0, 'message' => __($user_id->get_error_message())));
}
}
logout function
function ajax_logout()
{
check_ajax_referer('ajax-logout-nonce', 'ajaxsecurity');
wp_logout();
ob_clean(); // probably overkill for this, but good habit
echo 'adios!!';
wp_die();
}
add_action('wp_logout', 'auto_redirect_after_logout');
function auto_redirect_after_logout()
{
wp_redirect(home_url());
exit();
}