Aligatro
@Aligatro
Turn food and coffee into software...

Не могу понять, где ошибка в коде (php wordpress)?

Добрый вечер. Уже пол дня сижу мучаюсь с формой регистрации на сайте. Проблема заключается в том, что iframe окошко в котором открывается форма логина и регистрации, не желает автоматически закрываться после успешного входа на сайт. Я попытался эту проблему как-то решить и завис на пол дня. Вот 2 участка кода, которые напрочь отказываются работать, хотя теоретически написаны правильно и ошибок вроде нет.

jQuery(document).ready(function($) {
    // Perform AJAX login on form submit
    $('form#loginform').on('submit', function(e){
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: '/wp-admin/admin-ajax.php',
            data: { 
                'action': 'ajaxlogin', //calls wp_ajax_nopriv_ajaxlogin
                'username': $('form#loginform #user_login').val(), 
                'password': $('form#loginform #user_pass').val(),},
            success: function(data){
                if (data.loggedin == false){
                    alert ('yeap');
                }
            }
        });
    });

});


add_action( 'login_head', 'load_ajax_login_script' );
function load_ajax_login_script() {
          wp_enqueue_script('ajax_login_script', '/wp-content/plugins/login_page_changer/closewind.js');
	}

add_action( 'wp_ajax_ajaxlogin', 'ajax_login' );
add_action( 'wp_ajax_nopriv_ajaxlogin', 'ajax_login' );



function ajax_login(){
    $info = array(
    $info['user_login'] = $_POST['username'],
    $info['user_password'] = $_POST['password']
);

    $user_signon = wp_signon( $info, false );
    if ( is_wp_error($user_signon) ){
        echo json_encode(array('loggedin'=>false,));
    } else {
        echo json_encode(array('loggedin'=>true,));
    }
		
    die();
}


Большое спасибо за помощь.

P.s Хотел бы уточнить, проблема не в том, что я не знаю как при помощи js убрать блок, проблема в том, что сервер не отдает ответ =(
  • Вопрос задан
  • 2756 просмотров
Пригласить эксперта
Ответы на вопрос 4
Bowen
@Bowen
Японский бог
jQuery(document).ready(function($) {
    // Perform AJAX login on form submit
    $('form#loginform').on('submit', function(e){
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: '/wp-admin/admin-ajax.php',
            data: { 
                'action': 'ajaxlogin', //calls wp_ajax_nopriv_ajaxlogin
                'username': $('form#loginform #user_login').val(), 
                'password': $('form#loginform #user_pass').val(),},
            success: function(data){
                if (data.loggedin == false){
                    alert ('yeap');
                }
                $('form#loginform').hide(); // or remove();
            }
        });
    });

});
Ответ написан
Комментировать
gifted
@gifted
Веб дизайнер, верстальщик
#loginform #user_pass').val(),},
может изза лишней запятой после val()
Ответ написан
@kazin8
$user_signon = wp_signon( $info, false );
    if ( is_wp_error($user_signon) ){
        echo json_encode(array('loggedin'=>false,));
    } else {
        echo json_encode(array('loggedin'=>true,));
    }


Возможно, просто убирали лишнее, но посмотрите на запятые после false и true. Не уверен, но вроде лишние :)
Ответ написан
Aligatro
@Aligatro Автор вопроса
Turn food and coffee into software...
Спасибо всем, дело оказалось вовсе в другом. Необходимо было сделать прерывание отправки данных, что бы собрать их с помощью ajax. Вот финальный, рабочий код.

jQuery(document).ready(function($) {
    // Perform AJAX login on form submit
    $('form#loginform').on('submit', function(e){
// Stop the form from submitting so we can use ajax.
e.preventDefault();
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: '/wp-admin/admin-ajax.php',
            data: { 
                'action': 'ajaxlogin', //calls wp_ajax_nopriv_ajaxlogin
                'username': $('form#loginform #user_login').val(), 
                'password': $('form#loginform #user_pass').val()},
            success: function(data){
                if (data.loggedin === true){
                   parent.location.reload(true);
                } else {
				alert ('nope')
				}
            }
        });
		
    });
});


add_action( 'wp_ajax_ajaxlogin', 'ajax_login' );
add_action( 'wp_ajax_nopriv_ajaxlogin', 'ajax_login' );
function ajax_login(){



    // Nonce is checked, get the POST data and sign user on
    $info = array();
    $info['user_login'] = $_POST['username'];
    $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,));
    } else {
        echo json_encode(array('loggedin' => true,));
    }
		
    die();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы