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

如何在WordPress+Polylang环境中移除URL中的/category/

解决Polylang多语言站点移除URL中/category/的问题

要解决这个问题,你需要同时处理分类链接的生成逻辑和WordPress的重写规则——Polylang的多语言前缀会让原代码的替换逻辑失效,具体操作如下:

  • 替换原有的category_link过滤器代码,改成适配多语言前缀的版本:
add_filter('category_link', function($link) {
    // 不管链接里有没有语言前缀,都移除/category/
    return str_replace('/category/', '/', $link);
}, 99);

原代码只替换了category/,但多语言链接结构是/de/category/,所以要替换带前置斜杠的/category/,确保所有语言版本的分类链接都能正确去掉冗余路径。

  • 添加重写规则,让WordPress识别去掉category的多语言分类URL:
add_filter('rewrite_rules_array', function($rules) {
    $new_rules = array();
    // 匹配带两位语言码的分类URL(比如/de/blog/)
    $new_rules['^([a-z]{2})/([^/]+)/?$'] = 'index.php?lang=$matches[1]&category_name=$matches[2]';
    // 匹配主语言的分类URL(比如/blog/)
    $new_rules['^([^/]+)/?$'] = 'index.php?category_name=$matches[1]';
    
    // 把新规则放到最前面,确保优先匹配
    return $new_rules + $rules;
});

这段规则会捕获带语言前缀的URL,将其映射到对应语言的分类页面,同时兼容主语言的URL结构。

  • 最后必须刷新固定链接设置:
    进入WordPress后台 → 设置 → 固定链接,无需修改任何选项,直接点击「保存更改」,让WordPress更新重写规则。

完成以上操作后,site.com/blog/和site.com/de/blog/都能正常返回200状态码,访问对应的分类页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:28:11