我正在开发一个页面,该页面会在用户登陆时自动注销,然后页面会立即刷新。一旦页面重新加载,用户将被注销。类似的行为是,如果用户在隐身模式下打开页面,但我希望在他们打开指向此页面的链接时自动发生这种情况。
我只希望这发生在选定的页面中,我认为可以使用短代码来执行上述操作,但无法使其正常工作。
我已经尝试过这个钩子,然后按照 this post 创建了一个短代码,除了我添加了 get_permalink
函数
add_action( 'wp_logout', 'redirect_after_logout');
function redirect_after_logout(){
wp_redirect( get_permalink() );
exit();
}
/* Add shortcode */
add_shortcode('logout_and_refresh', 'redirect_after_logout');
但它似乎需要通过注销 URL 执行,我希望它在页面加载时自动发生。
<a href="<?php echo wp_logout_url( 'http://redirect-url' ); ?>" title="Logout">Logout</a>
答案 0 :(得分:0)
您可以在 wp_logout()
/ init
钩子之后直接调用 template_redirect
函数。
https://core.trac.wordpress.org/browser/tags/5.7/src/wp-includes/pluggable.php#L618
但是如果您想在文档加载时执行,您可以使用 javascript 重定向到您的注销网址。
window.onload = function() {
var uri = <?php echo json_encode(wp_logout_url( 'http://redirect-url' ));?>;
location.href = uri;
};
答案 1 :(得分:0)
您可以为此使用 init
操作挂钩。首先,您需要检查用户是否已登录。检查下面的代码。代码将进入活动主题 function.php 文件。经测试有效。
add_action( 'init', 'logout_user_land_on_page' );
function logout_user_land_on_page(){
if ( is_user_logged_in() ) {
wp_redirect( wp_login_url() );
wp_logout();
exit;
}
}