【发布时间】:2018-02-09 12:23:08
【问题描述】:
如果wp-admin 中的用户会话到期,用户已注销并且页面仍处于打开状态,则 WordPress 会覆盖模式登录。
如何注册用户会话到期/从另一个位置注销并从前端启动覆盖?
目前,我们通过 Javascript 使用按钮 on('click',...) 调出登录表单,登录和注销操作在 functions.php
$('a#show_login').on('click', function(e){
$('body').prepend('<div class="login_overlay"></div>');
$('form#login').fadeIn(500);
$('div.login_overlay, form#login a.close').on('click', function(){
$('div.login_overlay').remove();
$('form#login').hide();
});
e.preventDefault();
});
有没有办法实时识别用户会话到期,然后启动覆盖?我已经寻找其他参考和文档,但找不到解决方案来实现后端发生的事情的WordPress。理想情况下,能够在前端使用相同的钩子/操作(如果它们存在?)将是完美的解决方案。
如果不是,可能是 AJAX 和复制后端为超时会话所做的操作的组合。
这里是启动当前覆盖表单的函数
function ajax_login_init(){
wp_register_script('ajax-login-script', get_template_directory_uri() . '/assets/js/ajax-login-script.js', array('jquery') );
wp_enqueue_script('ajax-login-script');
wp_localize_script( 'ajax-login-script', 'ajax_login_object', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'redirecturl' => home_url(),
'loadingmessage' => __('Sending user info, please wait...')
));
// Enable the user with no privileges to run ajax_login() in AJAX
add_action( 'wp_ajax_nopriv_ajaxlogin', 'ajax_login' );
}
// Execute the action only if the user isn't logged in
if (!is_user_logged_in()) {
add_action('init', 'ajax_login_init');
}
以及后端过期会话的示例
请注意:我不想使用插件来实现这一点。
【问题讨论】:
标签: javascript php ajax wordpress