我将使用AJAX检查用户是否登录。你可以使用setInterval 每30秒检查一次。
我测试了以下代码,它可以正常工作。首先,在主题目录中创建一个名为ajax.js 并将此代码放入其中:
(function ( $ ) {
var check_user_is_logged_in = function(){
$.ajax({
type: \'POST\',
url: ajax_object.ajax_url,
data: {action:\'is_user_logged_in\'},
success:function(data) {
if ( data == \'no\' ) {
window.location.href = "http://mywebsite.com";
}
},
error: function(errorThrown){
console.log(errorThrown);
}
});
};
setInterval(function(){
check_user_is_logged_in();
}, 30000);
})( jQuery );
在上面的代码中,将“mywebsite.com”更改为要将注销用户重定向到的URL。您还可以调整
30000. 这是检查之间应该等待的毫秒数。
接下来,在你的主题中functions.php 文件,添加此代码:
function na_check_user_logged_in() {
// Simply check if the user is logged in or not and echo \'yes\' or \'no\'
echo ( is_user_logged_in() ) ? \'yes\' : \'no\';
wp_die();
}
function na_enqueue_scripts(){
// Enqueue our ajax.js script
wp_enqueue_script( \'na_ajax_example\', get_stylesheet_directory_uri().\'/ajax.js\', \'jquery\');
// Reveal the ajax_url for our script
wp_localize_script( \'na_ajax_example\', \'ajax_object\', array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
};
add_action( \'wp_ajax_is_user_logged_in\', \'na_check_user_logged_in\' );
add_action( \'wp_ajax_nopriv_is_user_logged_in\', \'na_check_user_logged_in\' );
add_action( \'wp_enqueue_scripts\', \'na_enqueue_scripts\' );
现在,此代码将在每个页面上运行。您需要编辑
na_enqueue_scripts 函数并添加一些逻辑,使其仅将脚本排入受保护页面的队列。