WordPress как на ладони

Авторизация происходит но если попытаться войти в админку выбрасывает

Авторизация происходит но если попытаться войти в админку выбрасывает. В чем может быть соль ?

function check_user_login_and_password($login,$password){
	if(($user = get_user_by('login',$login)) == false) return new WP_Error('not_user_by_login', 'Не существует пользователя с таким логином!');
	if(wp_check_password($password, $user->user_pass) == false) return new WP_Error('bad_pass', 'Не верный пароль пользователя!');
	return $user;
}

add_action('wp_ajax_nopriv_admin_login', 'admin_login');
function admin_login(){
	check_ajax_referer('lk_ajax');
	parse_str($_POST["allInput"],$params);

	if(is_wp_error($user = check_user_login_and_password($params['login'],$params['password']))){
		$out['instructions']['show_error'] = $user->get_error_message();
		header('Content-Type: application/json'); echo json_encode($out, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); exit();
	};

	if(!user_can($user, 'administrator')){
		$out['instructions']['show_error'] = 'Входить можно только администраторам!';
		header('Content-Type: application/json'); echo json_encode($out, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); exit();
	}

	$user = wp_signon( array(
		'user_login' => $params['login'],
		'user_password' => $params['password'],
	));

	$out['instructions']['redirect'] = get_home_url();
	header('Content-Type: application/json'); echo json_encode($out, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); exit();
}
$(document).on('submit', '#admin_login', function(event) {
			event.preventDefault();
			var data = {
				action: 'admin_login',
				allInput: $(this).serialize(),
				_ajax_nonce: lk_myajax.ajax_nonce
			};
			jQuery.post( lk_myajax.url, data, function(response) {
				var call_functions = {
					show_error : function ($message){
						M.toast({html: $message, classes: 'error', displayLength: 8000});
					},
					show_message : function($message){
						M.toast({html: $message, classes: 'message', displayLength: 10000});
					},
					redirect : function($url){
						window.location.replace($url);
					},
				}
				for (var key in response.instructions) {// Запускаем функции которые нам сказал запустить бекенд
					call_functions[key](response.instructions[key])
				}
				console.log('Получено с сервера: ' + response);
			});

		});
0
Андрей
3.8 лет назад
  • 0

    Уже разобрался, всем спасибо) Блин еще ни разу на этом сайте мне никто не ответил))
    У меня WordPress в подпапке. Надо было прописать :

    define( 'ADMIN_COOKIE_PATH', '/Имя_подпапки/wp-admin/' );

    Чтоб кука авторизации там была доступна.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация