首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的wp_safe_redirect输出ERR_TOO_MANY_REDIRECTS错误?

为什么我的wp_safe_redirect输出ERR_TOO_MANY_REDIRECTS错误?
EN

WordPress Development用户
提问于 2018-06-04 15:05:32
回答 1查看 1.7K关注 0票数 0

我已经构建了一个演示页面,现在每当用户登录而没有设置他的主题时,我想重定向它,我的代码是:

代码语言:javascript
运行
复制
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.

和重定向:

代码语言:javascript
运行
复制
function redirect() {
    wp_safe_redirect( admin_url( 'themes.php?page=theme_setup' ) );
    exit;
}

add_action( 'init', 'redirect' );

但是这会生成ERR_TOO_MANY_REDIRECTS。问题是,我计划从只加载后端的其他插件中提取数据,对于我来说,重定向用户并仍然捕获像init和admin_init这样的钩子是一个很好的钩子吗?

EN

回答 1

WordPress Development用户

发布于 2018-06-04 15:38:48

因为你处于无限循环中。

当用户访问站点时,init会触发,并被重定向到themes.php?page=theme_setup

然后,他们到达themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

因此,他们到达了themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

因此,他们到达了themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

因此,他们到达了themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

因此,他们到达了themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

因此,他们到达了themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

因此,他们到达了themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

因此,他们到达了themes.php?page=theme_setupinit钩子火灾,并将他们重定向到themes.php?page=theme_setup

.

浏览器,看到这种情况不断发生,一直在计算,当它达到一个阈值,它干预,并说不,你在循环,它永远不会结束,我给你一个警告(标题为ERR_TOO_MANY_REDIRECTS )

所以有几个问题:

  • UX:为什么你要绑架用户并将他们发送到那里,而不是鼓励用户访问自己?可怜的用户会被迷茫和困惑,因为他们希望在一个地方,但已经从那个位置,并被放在其他地方。令人难以置信的困惑。别说了,这不太好
  • 检查和无限循环:永远不要检查用户是否已经在该页面上,或者是否已经发生了重定向。此外,如果保存该页面涉及访问任何其他页面,那么它将不会保存,您将回到原点
  • 奥斯:因为它在init钩子上,所以即使是注销的用户,它也会被触发。该代码将使站点不可查看,因为访问者将被重定向到WP Admin,后者将尝试重定向到登录页面,触发您的代码,从而导致更多的无限循环。
  • 兼容性:单击“激活”不是激活主题的唯一方法。例如,如果用户使用WP.com calypso接口激活主题,会发生什么情况?还是WP CLI?或者单击实时预览而不是激活,并通过自定义程序执行吗?在所有这些情况下,要么是REST调用被重定向,要么是AJAX调用,要么是没有浏览器可以重定向。在所有这些情况下,重定向要么不会导致重定向,要么完全破坏它。
  • 实况预览问题:通过自定义程序预览主题将使预览窗格指向“设置”页面,使主题无法预览。

因此,我建议您提示用户,而不是重定向用户。这样做是通过添加一个横幅到管理区域,就像大多数主题和插件一样,或者是一个模态对话框。设置良好的默认设置,不要只在前端进行管理,并检查用户是否已登录并有能力设置这些设置。您不希望授予订阅者角色提示符或设置访问权限。

像这样的重定向是不好的,敌意的,而且会破坏事物。如果您想提示用户,just会提示他们

票数 4
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/305261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档