WordPress未登录用户访问指定页面跳转登录页PHP问题排查
代码无法正常运行的问题分析及修正方案
问题点拆解:
- 钩子选择错误:
admin_init仅在WordPress后台初始化时触发,前台页面访问不会执行该回调函数,导致前台跳转逻辑完全不生效。需替换为前台页面加载阶段触发的template_redirect钩子。 is_page()参数不严谨:传入页面ID时应使用整数3220,而非字符串'3220',虽然WordPress会自动类型转换,但直接传整数能避免潜在的识别异常。- 跳转URL格式错误:
wp_redirect()中的URL末尾带有多余空格,会导致浏览器无法识别有效地址,跳转失败。
修正后的代码:
add_action( 'template_redirect', 'my_redirect_if_user_not_logged_in' ); function my_redirect_if_user_not_logged_in() { if ( ! is_user_logged_in() && is_page( 3220 ) ) { // 用wp_login_url()可实现登录后返回原页面,也可替换为你的自定义登录地址(注意不要有空格) wp_redirect( wp_login_url( get_permalink() ) ); exit; } }
内容的提问来源于stack exchange,提问作者Newbyy
相关产品推荐
相关产品推荐

