我已经构建了一个演示页面,现在每当用户登录而没有设置他的主题时,我想重定向它,我的代码是:
function add_admin_page()
{
if ( empty( $_GET['page'] ) || $_GET['page'] !== 'theme_setup' ) {
return;
}
if ( ob_get_length() ) {
ob_end_clean();
}
ob_start();
?>
Hey, this is the awesome back-end page.
和重定向:
function redirect() {
wp_safe_redirect( admin_url( 'themes.php?page=theme_setup' ) );
exit;
}
add_action( 'init', 'redirect' );
但是这会生成ERR_TOO_MANY_REDIRECTS。问题是,我计划从只加载后端的其他插件中提取数据,对于我来说,重定向用户并仍然捕获像init和admin_init这样的钩子是一个很好的钩子吗?
发布于 2018-06-04 15:38:48
因为你处于无限循环中。
当用户访问站点时,init
会触发,并被重定向到themes.php?page=theme_setup
然后,他们到达themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
因此,他们到达了themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
因此,他们到达了themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
因此,他们到达了themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
因此,他们到达了themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
因此,他们到达了themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
因此,他们到达了themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
因此,他们到达了themes.php?page=theme_setup
和init
钩子火灾,并将他们重定向到themes.php?page=theme_setup
.
浏览器,看到这种情况不断发生,一直在计算,当它达到一个阈值,它干预,并说不,你在循环,它永远不会结束,我给你一个警告(标题为ERR_TOO_MANY_REDIRECTS
)
所以有几个问题:
init
钩子上,所以即使是注销的用户,它也会被触发。该代码将使站点不可查看,因为访问者将被重定向到WP Admin,后者将尝试重定向到登录页面,触发您的代码,从而导致更多的无限循环。因此,我建议您提示用户,而不是重定向用户。这样做是通过添加一个横幅到管理区域,就像大多数主题和插件一样,或者是一个模态对话框。设置良好的默认设置,不要只在前端进行管理,并检查用户是否已登录并有能力设置这些设置。您不希望授予订阅者角色提示符或设置访问权限。
像这样的重定向是不好的,敌意的,而且会破坏事物。如果您想提示用户,just会提示他们
https://wordpress.stackexchange.com/questions/305261
复制相似问题