WordPress未登录时跳转首页至其他URL,登录或wp-admin保留原地址
解决WordPress未登录访客跳转但保留wp-admin的问题
问题分析
原代码存在三处问题:
- 仅判断用户是否登录,未排除wp-admin管理后台页面,导致未登录用户访问wp-admin时也被跳转,无法进入登录界面
- 手动调用了
redirect_visitor()函数,而该函数已通过template_redirect钩子挂载,重复执行会引发不必要的逻辑冲突 site_url('xyz.com')会生成当前站点域名拼接的错误地址(如abc.com/xyz.com),不符合跳转至外部站点的需求
修正后的代码
将functions.php中的原有代码替换为以下内容:
add_action( 'template_redirect', 'redirect_visitor' ); function redirect_visitor() { // 仅对未登录且非wp-admin页面的访客执行跳转 if ( !is_user_logged_in() && !is_admin() ) { // 填写完整的目标跳转URL wp_redirect( 'https://xyz.com' ); exit(); } }
代码说明
is_admin():WordPress内置函数,判断当前是否处于wp-admin管理后台页面,返回true时跳过跳转逻辑!is_user_logged_in():确保跳转仅对未登录访客生效- 移除手动调用的
redirect_visitor(),仅通过template_redirect钩子触发,保证逻辑在正确的页面加载时机执行 - 直接传入完整的目标URL给
wp_redirect,避免路径拼接错误
内容的提问来源于stack exchange,提问作者Cross Vander
相关产品推荐
相关产品推荐

