Skip to content

Instantly share code, notes, and snippets.

@flayder
Last active November 20, 2017 09:36
Show Gist options
  • Save flayder/b63a95575c9ad8ef8f3df8e42a409785 to your computer and use it in GitHub Desktop.
Save flayder/b63a95575c9ad8ef8f3df8e42a409785 to your computer and use it in GitHub Desktop.
// Ajax Login
function ajax_login_init(){
/* Подключаем скрипт для авторизации */
wp_enqueue_script('script', get_template_directory_uri() . '/js/jquery.min.js');
wp_register_script('ajax-login-script', get_template_directory_uri() . '/js/ajax-login-script.js');
wp_enqueue_script('ajax-login-script');
/* Локализуем параметры скрипта */
wp_localize_script( 'ajax-login-script', 'ajax_login_object', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'redirecturl' => $_SERVER['REQUEST_URI'],
'loadingmessage' => __('Проверяются данные, секундочку...')
));
// Разрешаем запускать функцию ajax_login() пользователям без привелегий
add_action( 'wp_ajax_nopriv_ajaxlogin', 'ajax_login' );
}
// Выполняем авторизацию только если пользователь не вошел
if (!is_user_logged_in()) {
add_action('init', 'ajax_login_init');
}
function ajax_login(){
// Первым делом проверяем параметр безопасности
check_ajax_referer( 'ajax-login-nonce', 'security' );
// Получаем данные из полей формы и проверяем их
$args = array(
'orderby' => 'email',
'order' => 'ASC',
'search' => $_POST['useremail'],
'search_columns' => array('email'),
);
$users = get_users( $args );
$info = array();
$info['user_login'] = ($users)?$users[0]->data->user_login:null;
$info['user_password'] = $_POST['password'];
$info['remember'] = true;
$user_signon = wp_signon( $info, false );
if ( is_wp_error($user_signon) ){
echo json_encode(array('loggedin'=>false, 'message'=>__('Неправильный email или пароль!')));
} else {
echo json_encode(array('loggedin'=>true, 'message'=>__('Отлично! Идет перенаправление...')));
}
die();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment