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

WordPress自定义主题多语言配置:页面语言分配与URL设置求助

WordPress自定义主题多语言实现方案

1. URL嵌入语言标识(自定义分类法实现)

用自定义分类法就能搞定URL的语言标识嵌入,步骤很清晰:

  • 在主题的functions.php里注册一个叫language的分类法,重点配置rewrite参数来控制URL结构:
function register_language_taxonomy() {
    $args = array(
        'label' => '语言',
        'public' => true,
        'hierarchical' => false,
        'rewrite' => array(
            'slug' => '%language%',
            'with_front' => false
        ),
        'show_in_rest' => true
    );
    register_taxonomy('language', 'page', $args);
}
add_action('init', 'register_language_taxonomy');
  • 后台进入设置→固定链接,把自定义结构改成/%language%/%postname%/,保存一下刷新规则。
  • 编辑页面时,在右侧“语言”分类框给页面分配zh、en这类语言术语,发布后URL就会变成your-site.com/zh/about这种格式。

2. 无插件独立页面模板实现翻译

直接利用WordPress的模板层级规则就行,不用插件也能搞独立翻译:

  • 在主题目录下创建语言专属模板,比如:
    • page-zh.php:所有中文页面通用模板
    • page-en.php:所有英文页面通用模板
    • 要更细分的话,比如“关于我们”页面可以做page-about-zh.php、page-about-en.php
  • 编辑页面时,在右侧“页面属性”的“模板”下拉框选对应的语言模板就行。
  • 要是想自动根据语言分类加载模板,在functions.php加个钩子:
function load_language_template($template) {
    global $post;
    $languages = get_the_terms($post->ID, 'language');
    if ($languages && !is_wp_error($languages)) {
        $lang_slug = $languages[0]->slug;
        $custom_template = locate_template(array('page-' . $lang_slug . '.php'));
        if ($custom_template) {
            return $custom_template;
        }
    }
    return $template;
}
add_filter('template_include', 'load_language_template');

3. 独立多语言菜单配置

  • 后台去外观→菜单,分别建“中文菜单”、“英文菜单”,菜单里直接加对应语言的页面就行(这些页面URL已经带语言标识,选完链接自动正确)。
  • 在主题的header.php里,根据当前页面的语言分类加载对应菜单:
global $post;
$lang_slug = '';
$languages = get_the_terms($post->ID, 'language');
if ($languages && !is_wp_error($languages)) {
    $lang_slug = $languages[0]->slug;
}

switch ($lang_slug) {
    case 'zh':
        wp_nav_menu(array('menu' => '中文菜单', 'container' => 'nav'));
        break;
    case 'en':
        wp_nav_menu(array('menu' => '英文菜单', 'container' => 'nav'));
        break;
    default:
        wp_nav_menu(array('menu' => '默认菜单', 'container' => 'nav'));
}

可选插件方案

嫌手动写代码麻烦的话,这两个插件能省不少事:

  • Polylang:轻量型多语言插件,支持自定义分类法的语言URL、多语言菜单管理,还能兼容你自己写的自定义页面模板,配置简单。
  • WPML:功能更全,适合大型站点,但相对重一点,同样能满足你的所有需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:25:32