没有不值得去解决的问题,也没有不值得去学习的技术!

WordPress 2025 主题 + Polylang:修复日历链接缺少语言目录的完整记录

在英文页面(https://www.shuijingwanwq.com/en/)中,日历上每个日期点击后跳转的链接仍然是 https://www.shuijingwanwq.com/2026/06/08/ 的形式,而不是预期的 https://www.shuijingwanwq.com/en/2026/06/08/。

从经典到块:主题迁移

从Hueman到Twenty Twenty-Five,主题切换与多语言菜单配置

(1) 从Hueman到Twenty Twenty-Five,主题切换与多语言菜单配置

经过以上步骤,语言切换器最终在页面上的效果符合预期。(见图 9)

(2) 在 WordPress 2025 主题中,把 Polylang 语言切换器移到右上角的完整记录

页眉导航宽度异常问题:导航被内容宽度限制(图 4)

(3) WordPress Twenty Twenty-Five 全局宽度布局实操笔记:宽屏全幅+大屏限宽配置方案

中文(中国)前台首页:66主内容文章+33标准化侧边栏,区块正常显示(对应图6)

(4) 实操|WordPress Twenty Twenty-Five 区块主题 Text Blog Home 改造经典两栏首页(双语无损适配)

改造完成最终首页效果(图5)

(5) WordPress Twenty Twenty-Five 两栏首页改造:Text Blog 小图列表模板完整实操记录

图11:样式重写后下拉美观,但层级子分类在原生 Option 标签下以空格缩进表示

(6) 分类列表下拉菜单的美化与渲染机制调试实录

图3:应用修正后的 CSS,日历占据了应有的侧边栏宽度,有文章的日子用主题同色系进行了高亮,悬停时会变黑

(7) 修复日历在侧边栏“占不满”的问题:WordPress 2025 主题日历样式优化

图5:English 下的页面显示第二个 Language Visibility 区块

(8) 为博客首页侧边栏添加多语言「个人品牌」区块

图4:调整后的分页效果

(9) 一次 FSE 分页丢失的排查与修复:从纯布局样板到查询循环

在英文页面(https://www.shuijingwanwq.com/en/)中,日历上每个日期点击后跳转的链接仍然是 https://www.shuijingwanwq.com/2026/06/08/ 的形式,而不是预期的 https://www.shuijingwanwq.com/en/2026/06/08/。

(10) WordPress 2025 主题 + Polylang:修复日历链接缺少语言目录的完整记录

图4:中文站点,下拉菜单样式美观,显示“选择年份”。

(11) 优化 WordPress 2025 主题页脚:多语言导航、社交链接与归档下拉栏的完整改造记录

图2:分类页单栏效果

(12) 从单栏到两栏:WordPress分类页统一首页侧边栏及列表结构的实操记录

套用上述代码后,标签云立刻有了质的飞跃:

(13) 告别参差不齐!只用 CSS 打造适配 2025 主题的现代标签云

搜索“alipay”的结果,每篇文章都带了一张大尺寸的特色图片,紧跟着就是完整的正文内容。我的文章里还有代码片段,全都被拉出来显示在列表里,页面无限拉长,排版也乱糟糟的。如图1

(14) 搜索结果页太长了?我给WordPress 2025主题做了一次“断舍离”

在英文页面 https://www.shuijingwanwq.com/en/ 中,22 号显示蓝色链接

(15) WordPress 日历在 Polylang 多语言环境下的兼容性修复实践

Network检查确认:如图3

(16) WordPress主题迁移:Emoji处理代码是否需要保留?

图2 Site Wide Header

(17) WordPress 标签页 noindex 优化:从主题迁移到代码重构的实践分享

最近,我在检查我的 WordPress 网站时,发现浏览器开发者工具的控制台里出现了几个令人不安的红色错误信息:

(18) WordPress 控制台报错排查实录:从 jQuery 冲突到百度统计警告

再次无效后,我决定使用Auto Insert,Location选择"Frontend Only",并在代码中确定插入位置(图5)。

(19) 从Ad Inserter到WPCode:CTA配置迁移与优先级实现

我重新审视了这篇文章的内容,发现文章中直接包含了 WPCode 的简码调用:wpcode。如图4

(20) 记一次由 WPCode 简码引发的 WordPress 500 致命错误排查全记录

图6:Chrome无痕模式下,Logo和Favicon均显示正常

(21) 记一次 WordPress 2025 主题 Logo 与 Favicon 的折腾之旅

新的实现方式:基于WPCode Location的优化方案

(22) 从Ad Inserter到WPCode:CTA配置迁移与优化实践

初始配置(图1)

(23) WPCode代码片段插入顺序问题:理论与实践的差距

图 2:区块右侧面板的“额外 CSS”输入框。

(24) 优化 WordPress 热门文章列表间距,提升阅读体验

页面底部出现横向滚动条。

(25) WordPress 页面出现横向滚动条?一次从 CSS 到区块编辑器的完整排查记录

图 3:最终效果——浏览器标签栏、WordPress 编辑器及网站 Logo 显示正常,方块感基本消失

(26) AI 生成的 Logo 还有白边?借助 ChatGPT Plus,彻底解决 WordPress Favicon 方块感

图 4:控制台出现 availableWidth=0

(27) WordPress 归档页 AdSense 报错 availableWidth=0:从横向滚动条到 Gutenberg 区块结构的排查全过程

从经典到块(终章):主题迁移结束,我决定停止折腾

(28) 从经典到块(终章):主题迁移结束,我决定停止折腾

图3:WebPageTest 总览

(29) 🧪 WordPress 主题性能对比实测:Hueman vs Twenty Twenty-Five(CDN上线前基线)

图1:移动端访问旧文章时,图片没有正常居中缩放

(30) WordPress 旧文章移动端图片错位排查:经典编辑器 Caption 固定宽度与缓存验证全过程

如图4:最终 Header 展示效果

(31) Header 诗词微内容系统实战:从动态动画到稳定静态组件的收敛过程

问题背景

本站从 Hueman 主题切换到 WordPress 官方 2025 主题(Twenty Twenty-Five)后,网站需要支持中英双语,使用了 Polylang 插件实现国际化。切换完成后发现一个怪异的问题:标签云、分类列表等组件的链接都能正确带上 /en/ 语言目录,唯独日历小工具的链接“掉队”了

在英文页面(https://www.shuijingwanwq.com/en/)中,日历上每个日期点击后跳转的链接仍然是 https://www.shuijingwanwq.com/2026/06/08/ 的形式,而不是预期的 https://www.shuijingwanwq.com/en/2026/06/08/

在英文页面(https://www.shuijingwanwq.com/en/)中,日历上每个日期点击后跳转的链接仍然是 https://www.shuijingwanwq.com/2026/06/08/ 的形式,而不是预期的 https://www.shuijingwanwq.com/en/2026/06/08/。

这个问题会导致用户从英文版日历点击日期后,跳转到中文版(默认语言)的日期归档页面,而不是对应的英文日期归档,严重影响多语言站点的用户体验。

问题根源分析

为什么只有日历“掉队”?

经过排查发现,WordPress 默认的日历小工具在生成日期链接时,并没有使用标准的、兼容多语言的 home_url() 函数,而是采用了 get_day_link()get_month_link() 等更底层的函数。这些函数在生成链接时,不会主动考虑 Polylang 等插件添加的语言目录前缀(如 /en/)。

而标签云、分类列表等其他组件工作正常,是因为它们正确地使用了能识别当前语言环境的函数来生成链接。因此,无论 Polylang 如何设置,日历都“固执”地生成不带语言代码的链接。

Polylang 配置确认

在动手之前,先确认了 Polylang 的基础设置是正确的:

  1. 固定链接结构设置 > 固定链接 选择了“自定义结构”https://www.shuijingwanwq.com /%year%/%monthnum%/%day%/%post_id%/
  2. URL 修改设置语言 > 设置 > 网址修改 中已勾选“根据固定链接中的目录名称设置语言”
  3. 默认语言:中文(zh)作为默认语言,URL 中不显示 /zh/ 目录

调试代码也验证了语言识别正常:

  • 中文首页:<!-- Polylang Current Language: zh -->
  • 英文首页:<!-- Polylang Current Language: en -->

既然 Polylang 设置无误,问题就出在日历小工具本身——需要通过代码来“手动”修正日历链接。

解决方案:使用 WPCode 插件添加自定义代码

直接修改主题的 functions.php 文件虽然可行,但主题更新时修改会丢失。更推荐使用 WPCode 插件来安全地添加自定义代码片段。

第一步:安装 WPCode 插件

在 WordPress 后台,进入 插件 > 安装插件,搜索 WPCode,找到后点击“立即安装”并激活。

在 WordPress 后台,进入 插件 > 安装插件,搜索 WPCode,找到后点击“立即安装”并激活。

WPCode 是一个代码管理插件,可以安全地在 WordPress 中添加各种代码片段(PHP、CSS、JavaScript、HTML 等),而无需直接修改主题文件。

第二步:进入 Code Snippets 并添加新片段

激活 WPCode 后,在左侧菜单进入 Code Snippets(代码片段),点击顶部的 Add Snippet(添加片段)按钮。

激活 WPCode 后,在左侧菜单进入 Code Snippets(代码片段),点击顶部的 Add Snippet(添加片段)按钮。

在页面中,找到并点击 Add Your Custom Code (New Snippet) 卡片,即“create your own”的入口。

第三步:选择 PHP Snippet 类型

点击后,会弹出 Create Custom Snippet 窗口。在该窗口中,你会看到多个代码类型卡片,如 HTML Snippet、Text Snippet、CSS Snippet、JavaScript Snippet、PHP Snippet、Universal Snippet 等。

直接点击 PHP Snippet 卡片,选择 PHP 代码片段类型。

直接点击 PHP Snippet 卡片,选择 PHP 代码片段类型。

第四步:粘贴修复代码并设置

在编辑界面中,填写 标题(如“修复多语言日历链接”),然后将以下修复代码完整粘贴到 Code Preview 代码框中:

PHP
<?php
/**
 * 为 WordPress 默认日历小工具的所有日期链接添加 Polylang 语言前缀
 * 仅在英文(en)页面生效,中文页面保持原样
 */
function fix_calendar_links_with_polylang( $calendar_output ) {

    // 1. 检查 Polylang 函数是否存在,且不在后台
    if ( function_exists( 'pll_current_language' ) && ! is_admin() ) {

        // 2. 获取当前语言
        $current_lang = pll_current_language();

        // 3. 只在英文页面进行替换
        if ( $current_lang === 'en' ) {

            // 4. 获取不带语言前缀的主页 URL(用于匹配旧链接)
            $home_url = home_url( '/' );

            // 5. 构建包含 /en/ 的正确主页 URL
            $correct_home_url = str_replace( 'https://www.shuijingwanwq.com/', 'https://www.shuijingwanwq.com/en/', $home_url );

            // 6. 在日历HTML中,将所有旧链接替换为新的
            $calendar_output = str_replace( $home_url, $correct_home_url, $calendar_output );
        }
    }

    return $calendar_output;
}
add_filter( 'get_calendar', 'fix_calendar_links_with_polylang' );

代码说明

  • 第 3 行的 if ( $current_lang === 'en' ) 确保替换操作仅在英文页面执行,中文页面不受影响
  • 第 5 行构建包含 /en/ 的正确链接
  • 第 6 行执行链接替换

插入位置设置
在编辑界面下方的 Insertion 区域:

  • Insert Method:选择 Auto Insert(自动插入)
  • Location:选择 Frontend Only(仅前端),确保代码只在网站前台生效,更安全
插入位置设置:

完成设置后,将右上角的开关从 Inactive 切换为 Active(激活),点击 Save Snippet(保存片段)。

第五步:清除缓存

代码生效后,务必清除所有缓存

  • WPCode 不需要额外操作,代码保存即生效
  • W3 Total Cache:进入插件设置,点击“清除所有缓存”
  • 浏览器缓存:按 Ctrl + Shift + R(Windows/Linux)或 Cmd + Shift + R(Mac)强制刷新
  • 如果使用了 CDN(如 Cloudflare),也请清除 CDN 缓存

最终验证结果

修复完成后,分别访问中文首页和英文首页,验证日历链接:

页面修复前修复后
中文首页 (/)https://.../2026/06/16/https://.../2026/06/16/
英文首页 (/en/)https://.../2026/06/16/https://.../en/2026/06/16/
修复完成后,分别访问中文首页和英文首页,验证日历链接:

踩坑记录与关键要点

踩坑 1:第一版代码导致 /en/en/ 重复

最初版本的代码在替换时,没有判断当前页面是否已经包含语言目录,导致在英文页面中,链接被错误地从 https://.../en/2026/... 再次替换为 https://.../en/en/2026/...

解决方案:在替换逻辑中,只针对不包含语言前缀的链接进行处理。

踩坑 2:中文页面被错误添加 /en/

由于中文(zh)作为默认语言,URL 中不包含 /zh/ 目录,而之前的代码没有限制仅对英文页面生效,导致中文页面的日历链接也被错误地加上了 /en/

解决方案:增加 if ( $current_lang === 'en' ) 判断,只在英文页面执行替换操作

关键要点总结

  1. WordPress 默认日历小工具生成链接时不兼容 Polylang 的语言目录,需要通过 get_calendar 过滤器手动修正
  2. 使用 WPCode 插件添加代码比直接修改 functions.php 更安全、更易于管理
  3. 务必判断当前语言,只对需要修正的语言(如英文)执行替换,避免影响默认语言页面
  4. 代码修改后记得清除所有缓存,包括插件缓存、浏览器缓存和 CDN 缓存

参考资料

一次 FSE 分页丢失的排查与修复:从纯布局样板到查询循环 优化 WordPress 2025 主题页脚:多语言导航、社交链接与归档下拉栏的完整改造记录

WordPress 网站维护、性能优化与博客运营咨询

本站已持续运营超过 10 年,累计发布 1000+ 篇原创技术文章,长期实践 WordPress 网站建设、CDN / Cloudflare 配置、缓存优化、Google SEO、广告变现和多语言网站运营。

如果你的 WordPress 网站遇到访问慢、缓存异常、插件冲突、广告不显示、SEO 基础结构混乱、CDN 配置不确定等问题,可以联系我做一次远程技术排查。

适合以下用户:
✅ 个人博客站长
✅ WordPress 网站运营者
✅ 独立开发者与内容创作者
✅ SaaS 产品官网运营团队
✅ 希望优化网站速度与稳定性的站点

服务内容:
✅ WordPress 速度优化
✅ Cloudflare / CDN / 缓存配置排查
✅ 插件冲突与页面异常排查
✅ AdSense 广告显示问题排查
✅ SEO 基础结构检查
✅ 博客运营与商业化咨询

如需了解方案或交流相关问题,请直接联系我,并注明:WordPress 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理