Wordpress AJAX注销脚本问题

时间:2018-10-03 16:11:57

标签: javascript php wordpress

我有一个功能,在满足特定条件后,需要从WordPress中注销用户。函数logout_check()是从另一个函数调用的。我已经尝试在wp_logout()语句之后使用IF,但是WordPress会返回'已经发送的标题...'

因此,我正尝试使用javascript登出。

在这个论坛的帮助下,我编写了一些代码。我知道可以满足测试change_check()的条件才能注销,但是看起来好像不执行javascript。有functions.phpcustomAjaxLogout.js两部分。

任何帮助将不胜感激。

FUNCTIONS.PHP

/* ================== CLIENT LOGOUT CHECK FUNCTION ================== */
function logout_check(){
    $my_redirect = home_url();
    $my_quit = change_check(); // this DB function returns 'quit' / 'ok'
    if ($my_quit == 'quit'){
        wp_enqueue_script('custom-ajax-logout', get_stylesheet_directory_uri() . '/js/customAjaxLogout.js', array('jquery') );
        wp_localize_script('custom-ajax-logout', 'ajax_object',
            array(
                'ajax_url' => admin_url('admin-ajax.php'),
                'home_url' => $my_redirect,
                'logout_nonce' => wp_create_nonce('ajax-logout-nonce'),
            )
        );
        exit();
    }
    else{
        wp_redirect($my_redirect);
        exit();
    }
}


/* ================== AJAX LOGOUT FUNCTION ================== */
function custom_ajax_logout_func(){
    check_ajax_referer( 'ajax-logout-nonce', 'ajaxsecurity' );
    wp_clear_auth_cookie();
    wp_logout();
    ob_clean();
    wp_die();
}
add_action('wp_ajax_custom_ajax_logout', 'custom_ajax_logout_func');

customAjaxLogout.js

$(document).ready( function(e) {
    e.preventDefault();
    $.ajax({
        type: 'POST',
        url: ajax_object.ajax_url,
        data: {
            'action': 'custom_ajax_logout',
            'ajaxsecurity': ajax_object.logout_nonce
        },
        success: function(r){
            // When the response comes back
            window.location = ajax_object.home_url;
        }
    });
});

0 个答案:

没有答案