You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改WordPress地理重定向函数以排除登录页等特定页面不触发跳转

修改方案

你只需要在重定向逻辑执行前新增排除页面的判定规则,匹配到指定页面时直接终止重定向即可。

修改后的完整代码

function country_geo_redirect() {
    // 已登录用户直接跳过重定向
    if ( is_user_logged_in() ) {
        return;
    }

    // 新增:排除不需要重定向的页面
    $excluded_paths = [
        '/wp-login.php', // 默认登录页
        '/wp-admin/', // 后台所有路径
        // 可自行添加其他需要排除的路径,示例:'/custom-login/', '/test-page/'
    ];
    $current_uri = $_SERVER['REQUEST_URI'];
    foreach ($excluded_paths as $path) {
        if (strpos($current_uri, $path) === 0) {
            return;
        }
    }
    // 额外适配后台其他入口的判定
    if (is_admin()) {
        return;
    }

    // 原有重定向逻辑保持不变
    $country = getenv('HTTP_GEOIP_COUNTRY_CODE');
    if ( $country == "GB" ) {
        wp_redirect( 'https://www.website.ie', 301 );
        exit;
    } else if ( $country == "IE" ) {
        wp_redirect( 'https://www.website.co.uk', 301 );
        exit;
    }
}
add_action('init', 'country_geo_redirect');

代码说明

  • 新增的$excluded_paths数组可以自由配置需要跳过重定向的页面路径,支持配置目录级别的路径,配置后对应目录下的所有页面都会跳过重定向
  • 使用strpos匹配路径开头,避免登录页带参数(如wp-login.php?redirect_to=xxx)时匹配失效
  • 保留了原有已登录用户不重定向的逻辑,登录成功后访问全站都不会触发重定向,不影响站点编辑操作

调试注意事项

测试阶段建议先把wp_redirect中的301永久重定向改为302临时重定向,避免301规则被浏览器缓存,导致修改代码后仍然触发旧的重定向逻辑,确认功能正常后再改回301即可


内容的提问来源于stack exchange,提问作者Blackrath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:36:03