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

无插件手动为WordPress全类型URL添加/language/前缀的实现咨询

无插件实现WordPress全内容语言URL前缀改造方案

核心实现逻辑

通过WordPress内置的重写规则API、链接生成过滤器、模板重定向钩子,不依赖第三方插件即可完成所有内容类型的URL语言前缀适配,覆盖普通文章、独立页面、WooCommerce产品、所有自定义文章类型的路由与链接生成。

具体操作步骤

    1. 注册自定义语言查询变量
      先让WordPress能够识别URL中携带的语言参数,将lang加入允许读取的公共查询变量列表:
    add_filter('query_vars', function($vars) {
        $vars[] = 'lang';
        return $vars;
    });
    
    1. 注册高优先级语言路由规则
      匹配所有格式为/{两位语言代码}/任意子路径的URL,将语言代码捕获为lang查询参数,必须将规则优先级设为top,否则会被WordPress默认固定链接规则抢占匹配,这是绝大多数自定义方案不生效的核心原因:
    add_action('init', function() {
        add_rewrite_rule(
            '^([a-z]{2})/(.*)?$',
            '?lang=$1&pagename=$2',
            'top'
        );
    });
    
    1. 全局覆盖所有类型的链接生成逻辑
      分别挂钩文章、页面、自定义文章类型的链接生成过滤器,自动在所有生成的URL路径最前面拼接当前语言代码,确保所有输出给用户的链接都符合要求:
    // 适配普通文章链接
    add_filter('post_link', function($permalink, $post) {
        $current_lang = get_query_var('lang') ?: 'en';
        return home_url("/{$current_lang}" . wp_make_link_relative($permalink));
    }, 10, 2);
    
    // 适配独立页面链接
    add_filter('page_link', function($permalink) {
        $current_lang = get_query_var('lang') ?: 'en';
        return home_url("/{$current_lang}" . wp_make_link_relative($permalink));
    });
    
    // 适配自定义文章类型(含WooCommerce产品)链接
    add_filter('post_type_link', function($permalink, $post) {
        $current_lang = get_query_var('lang') ?: 'en';
        return home_url("/{$current_lang}" . wp_make_link_relative($permalink));
    }, 10, 2);
    
    1. 旧URL自动301跳转
      针对用户直接访问不带语言前缀的旧URL的场景,自动跳转到对应语言前缀的新URL,避免重复内容与404:
    add_action('template_redirect', function() {
        if (!get_query_var('lang') 
            && !is_admin() 
            && strpos($_SERVER['REQUEST_URI'], '/wp-admin') !== 0
            && strpos($_SERVER['REQUEST_URI'], 'wp-content') === false
            && strpos($_SERVER['REQUEST_URI'], 'wp-includes') === false
        ) {
            $redirect_target = home_url('/en' . $_SERVER['REQUEST_URI']);
            wp_redirect($redirect_target, 301);
            exit;
        }
    });
    

常见不生效的排查点

  • 所有代码添加完成后,必须进入WordPress后台「设置-固定链接」页面,不修改任何内容直接点击保存,刷新系统内置的重写规则缓存
  • 检查站点伪静态配置:Apache站点需确认.htaccess文件包含WordPress默认的重写规则;Nginx站点需确认配置中已将所有非静态文件的请求转发到根目录index.php
  • 清空服务器端页面缓存、CDN缓存、对象缓存,避免旧规则残留
  • 不要修改默认固定链接结构为带语言代码的格式,会和自定义重写规则产生路由冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 06:36:04