我有一个功能,在满足特定条件后,需要从WordPress
中注销用户。函数logout_check()
是从另一个函数调用的。我已经尝试在wp_logout()
语句之后使用IF
,但是WordPress
会返回'已经发送的标题...'。
因此,我正尝试使用javascript
登出。
在这个论坛的帮助下,我编写了一些代码。我知道可以满足测试change_check()
的条件才能注销,但是看起来好像不执行javascript
。有functions.php
和customAjaxLogout.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;
}
});
});