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

WordPress中如何通过不同URL路径在同一页面展示多语言内容

实现方案

第一步:配置WordPress重写规则

默认WordPress会将example.com/terms/en这类路径识别为独立页面,不存在就返回404,需要先添加重写规则,把带语言后缀的页面请求转发到原页面处理,将以下代码添加到当前主题的functions.php文件中:

add_action('init', function() {
    // 规则中的terms替换为你实际的页面别名,有多页面需求可重复添加对应规则
    add_rewrite_rule(
        '^terms/([a-z]{2})/?$',
        'index.php?pagename=terms',
        'top'
    );
});

// 禁用路径自动跳转,避免带语言后缀的路径被强制重定向到原terms页面
add_filter('redirect_canonical', function($redirect_url) {
    if (preg_match('/^terms\/[a-z]{2}\/?$/', $_SERVER['REQUEST_URI'])) {
        return false;
    }
    return $redirect_url;
});

修改完成后进入WordPress后台设置-固定链接,点击「保存更改」刷新重写规则即可生效。

第二步:修改前端JS逻辑

将原来从查询参数读取语言编码的逻辑,替换为从URL路径最后一段读取,代码如下:

<script type="text/javascript" charset="UTF-8">   
  // 拆分URL路径,过滤空片段后取最后一段
  const pathSegments = window.location.pathname.split('/').filter(segment => segment !== '');
  // 可根据你实际支持的语言调整列表,未匹配到时默认使用en
  const allowLangs = ['en', 'es', 'fr', 'gb'];
  const langCode = allowLangs.includes(pathSegments.at(-1)) ? pathSegments.at(-1) : 'en';

  Api.Initialized.then(function() {
    Api.LoadContent(["https://url-to-api-that-has-content.json"], langCode);
  });
</script>

以上逻辑对多层路径同样生效,比如example.com/xxx/terms/en也可以正常取到最后一段的语言编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:12:04