【发布时间】:2014-08-26 17:41:52
【问题描述】:
如何使用 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();
});
怎么了?
【问题讨论】:
-
你刷新页面了吗?它可能会被注销,但显然因为你是用 ajax 来做的,所以页面在刷新之前不会改变。
-
代码现在可以工作了,我做错了。如果你使用它,通过 jquery 加载,你可以使用 relodlognwidget() 之类的函数刷新小部件; :)