使用Ajax的Wordpress注销

时间:2014-07-05 20:25:04

标签: ajax wordpress logout

如何使用ajax注销wordpress?您无法使用wp-login.php,因此我们需要使用admin-ajax.php。我正在使用以下代码:

html(小部件):

            <form id="logout" action="logout" method="post">
            <input class="submit_button" type="submit" value="<?php echo $lg_logout[$lang] ?>" name="submit">
            <?php wp_nonce_field( 'ajax-logout-nonce', 'logoutsecurity' ); ?>
            </form>

的functions.php

add_action('init', 'ajax_login_init');
function ajax_logout_init(){
    add_action( 'wp_ajax_ajaxlogout', 'ajax_logout' );
}
add_action('init', 'ajax_logout_init');
function ajax_logout(){
check_ajax_referer( 'ajax-logout-nonce', 'logoutsecurity' );
// kill session
wp_clear_auth_cookie();
wp_logout();
die();
}

和ajax(js):

$('form#logout').on('submit', function(e){
    $.ajax({
        type: 'POST',
        url: siteUrl+'/wp-admin/admin-ajax.php',
        data: { 
            'action': 'ajaxlogout', //calls wp_ajax_nopriv_ajaxlogout
            'logoutsecurity': $('form#logout #logoutsecurity').val() },
        success: function(data){
            console.log('tutu');
                //relodlognwidget();
        }
    });
    e.preventDefault();
});

怎么了?

1 个答案:

答案 0 :(得分:3)

感谢@zorg的领先优势。我看到你有这个工作。对于像我一样来到这里的人和需求以及ajax注销,这是一个完整的解决方案。

/** Set up the Ajax Logout */
if (is_admin()) {
    // We only need to setup ajax action in admin.
    add_action('wp_ajax_custom_ajax_logout', 'custom_ajax_logout_func');
} else {
    wp_enqueue_script('custom-ajax-logout', get_stylesheet_directory_uri() . '/js/customAjaxLogout.js', array('jquery'), '1.0', true );
    wp_localize_script('custom-ajax-logout', 'ajax_object',
        array(
            'ajax_url' => admin_url('admin-ajax.php'),
            'home_url' => get_home_url(),
            'logout_nonce' => wp_create_nonce('ajax-logout-nonce'),
        )
    );
}
function custom_ajax_logout_func(){
    check_ajax_referer( 'ajax-logout-nonce', 'ajaxsecurity' );
    wp_clear_auth_cookie();
    wp_logout();
    ob_clean(); // probably overkill for this, but good habit
    echo 'adios!!';
    wp_die();
}

现在是JavaScript文件。如果您使用上面的代码将保存在活动主题文件夹中,如wp-content/themes/yourtheme/js/customAjaxLogout.js注意:我使用jQuery.on的形式,即使在JavaScript之后也可以创建注销按钮文件已运行。由于我们有ajax注销,我们可能正在使用Ajax加载其他东西,甚至是注销按钮。

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