WordPress wp_redirect跳转异常:管理员无法跳转至维护页求助
解决管理员重定向维护页面的循环重定向问题
嘿,这个问题我之前也踩过坑!你现在的代码触发了无限循环重定向——当管理员被转到/maintenance/页面后,template_redirect钩子会再次运行,代码又检测到当前用户是管理员,于是又执行重定向,浏览器自然会因为这种死循环报错。
给你两个可行的解决方案,选适合你的场景就行:
方案一:利用WordPress页面判断(适合后台创建的维护页面)
如果你的维护页面是在WordPress后台创建的(页面slug为maintenance),只需要在重定向前判断当前页面是不是已经是维护页面即可:
add_action( 'template_redirect', 'custom_redirect' ); function custom_redirect() { // 仅当用户是管理员,且当前页面不是维护页面时才执行重定向 if ( current_user_can('administrator') && !is_page('maintenance') ) { wp_redirect( home_url('/maintenance/') ); exit; // 必须加上,终止后续代码执行,避免额外问题 } }
注意:如果你的维护页面slug不是maintenance,把is_page()里的参数改成你实际的页面slug或者页面ID就好。
方案二:直接判断请求路径(适合静态维护页面)
如果你的维护页面是静态HTML文件或者不需要依赖WordPress页面系统,可以直接检查当前请求的URI路径:
add_action( 'template_redirect', 'custom_redirect' ); function custom_redirect() { $maintenance_uri = '/maintenance/'; // 检查用户权限+当前路径是否非维护页面路径 if ( current_user_can('administrator') && $_SERVER['REQUEST_URI'] !== $maintenance_uri ) { wp_redirect( home_url($maintenance_uri) ); exit; } }
两种方案都能彻底解决循环重定向的问题,替换代码后测试一下应该就能正常工作了!
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

