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

求助:如何基于访客国家代码切换WordPress站点URL

基于国家代码实现WordPress访客URL切换

核心思路

不再维护庞大的IP列表,而是通过IP地址解析出对应国家代码,再根据预设的国家代码列表判断是否需要切换站点URL。

实现步骤及代码示例

1. 获取访客的国家代码

可以借助PHP的geoip_country_code_by_name()函数(需要服务器开启geoip扩展),以下是适配WordPress的实现代码:

// 获取访客真实IP
function get_visitor_ip() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        return $_SERVER['REMOTE_ADDR'];
    }
}

// 解析IP对应的国家代码
function get_visitor_country_code() {
    $ip = get_visitor_ip();
    // 跳过本地测试IP
    if (strpos($ip, '127.0.0.1') !== false || strpos($ip, 'localhost') !== false) {
        return 'TEST';
    }
    // 依赖服务器geoip扩展
    if (function_exists('geoip_country_code_by_name')) {
        return strtoupper(geoip_country_code_by_name($ip));
    }
    return false;
}

2. 根据国家代码触发URL切换

在WordPress的init钩子中添加判断逻辑,自定义需要跳转的国家代码和对应目标URL:

add_action('init', 'switch_site_url_by_country');

function switch_site_url_by_country() {
    // 后台操作不执行跳转
    if (is_admin()) {
        return;
    }

    $country_code = get_visitor_country_code();
    // 预设需要跳转的国家代码(如CN=中国、US=美国)
    $target_countries = array('CN', 'US');
    // 国家代码与目标URL的映射表
    $country_url_map = array(
        'CN' => 'https://cn.your-site.com',
        'US' => 'https://us.your-site.com'
    );

    // 匹配到目标国家且当前URL不符时执行跳转
    if ($country_code && in_array($country_code, $target_countries)) {
        $target_url = $country_url_map[$country_code];
        if (get_site_url() !== $target_url) {
            wp_redirect($target_url, 302);
            exit;
        }
    }
}

3. 关键注意事项

  • 若服务器未开启geoip扩展,可联系主机商开启,或使用本地IP数据库(如MaxMind GeoLite2)自行编写解析逻辑。
  • 跳转默认用302临时重定向,正式环境可改为301永久重定向。
  • 本地测试时,可手动修改get_visitor_country_code()的返回值,模拟不同国家的跳转效果。
  • 需避免无限循环:确保目标站点不会执行相同的跳转逻辑,或在判断中排除目标域名。

内容的提问来源于stack exchange,提问作者I love coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:05:02