标签: 多语言网站
-
W3 Total Cache 的 Page Cache 明明设置了 4 天生命周期,实际缓存却长期活不过一天。经过对缓存文件、*_old ctime、WordPress Hook 和调用栈的持续追踪,最终确认了两条提前触发全量缓存失效的真实路径:Polylang 标签与翻译关系更新触发 edited_term / delete_term,以及 Yoast SEO 的 wpseo_detect_default_seo_data 每日 Cron 通过 WPSEO_Utils::clear_cache() 调用 w3tc_flush_posts()。本文记录两条根因的定位、独立 MU Plugin 修复、真实双语文章发布流程验证,以及修复后 Page Cache 首次存活超过 24 小时的结果,同时保留 Yoast option 实际变化场景尚待进一步验证的部分。
-
在 A Tour of Go 多语言站点上线过程中,我开始将 IndexNow 纳入搜索引擎收口流程。实测中,新 Key 首次提交可能返回 HTTP 202,等待验证后才转为 200;更令人困惑的是,即使接口早已返回 200,Bing Webmaster Tools 仍长期显示 Get Started。经过多轮独立 Key、不同子域名、Bing direct endpoint 等测试后,第二天后台终于开始出现 Self 提交记录。与此同时,开启 Cloudflare Crawler Hints 后,英文、日语、德语站很快出现大量来源为 Cloudflare 的 IndexNow 记录。本文记录完整排查过程、直接提交与 Cloudflare Crawler Hints 的实际差异,以及最终将一次性全站 IndexNow bootstrap 标准化为 Go CLI 的实现思路。
-
在一篇包含大量 Gutenberg 段落、引用、列表、图片和 90 个 Code Block Pro 区块的超长文章中,我继续验证 WordPress 中文到英文整篇 AI 翻译流程。排查过程中先后发现受保护标记过多、普通段落边界过度保护、Plaintext Code Block Pro 内容字段被误判为结构变化,以及空白 freeform 导致 PARAGRAPH_RUN 结构签名漂移等问题。通过引入普通段落区域、区分内容字段与结构配置、修正最终 Gutenberg 结构签名后,受保护标记降至 506 个,最终仍以一次完整 GLM-5.2 请求成功生成英文译文,并通过 Gutenberg 编辑器实际验证。
-
在将 WordPress 英文站从 /en/ 迁移到独立子域名后,我发现部分新发布的英文译文虽然已经与中文文章建立 Polylang 关联,但中文详情页仍然缺少语言切换器和 hreflang。排查确认,问题来自 W3 Total Cache Redis Object Cache 在多 Host 环境下缓存了旧的 post_translations_relationships 数据,随后 Page Cache 又继续保存错误 HTML。本文记录了 WP-CLI、真实 HTTP Runtime、精确 Object Cache 删除和 Page Cache 验证过程,并说明为什么最终暂时不引入复杂的跨 Host Redis 清理逻辑,而选择保持现有 TTL,让该低优先级问题自然恢复。
-
将 WordPress 英文站从 /en/ 迁移到独立子域名后,我排查了 Polylang 多域名、独立后台 Host、W3 Total Cache Page Cache 与 Redis Object Cache 之间的缓存失效问题。最终确认并修复了英文文章更新后语言首页 Page Cache 未完整失效,以及 posts 对象缓存跨 Host 失效的问题,并将方案整理为 MIT 许可的独立 MU Plugin。真实后台 Update 验证后,Origin 层已能够正确返回最新内容,剩余问题进一步定位到 EdgeOne、Cloudflare 等 CDN 层。
-
收到包含 8 个中文文章 URL 的内容整改清单后,我没有直接删除 WordPress 文章,而是通过 MU Plugin 保留文章发布状态和系列标题,同时让指定中文页面真实返回 HTTP 404,并限制 REST API、RSS 与 Sitemap 继续输出正文。随后结合 W3 Total Cache、EdgeOne、Cloudflare 和 Polylang 完成缓存排查,最终仅下线清单中的中文文章,对应英文译文继续正常访问。
-
一份用于同步 Polylang 中英文标签的批处理脚本,长期存在 WordPress 后台标签总数与脚本读取结果不一致的问题。此前两次排查分别修复了 Polylang 翻译关系缓存残留和动态分页导致的数据集变化,但问题仍会复发。最终通过对比 WP-CLI 与直接 PHP 执行环境,确认根因是 get_terms() 命中了持久化的旧 WP_Term_Query 查询缓存。脚本在源标签查询中加入 ‘cache_results’ => false 后,终于从旧的 8915 个标签恢复为正确的 8928 个。本文记录完整排查过程,并总结多语言数据维护脚本在缓存、运行上下文、统计验证和幂等性方面的实践经验。
-
本文记录了一次 WordPress 英文文章页面横向滚动条的完整排查过程。在 Polylang 多域名、Twenty Twenty-Five 区块主题、W3 Total Cache Page Cache 与 W3TC Object Cache(Redis 后端)的组合下,页头搜索框的 `min-width: 250px` 导致英文语言切换器被挤出父级 Flex 容器。将其修改为 `min-width: 0` 后,英文页面却仍然输出旧 CSS。进一步对比 Cloudflare、源站响应、数据库原始内容与 `get_post()` 返回值后确认:数据库中的 `wp_global_styles` 已经更新,但 W3TC Object Cache 仍在返回旧的文章对象。最终通过 `clean_post_cache()` 精确清理对应对象缓存后,新 CSS 正常生效,横向滚动条消失。本文同时结合此前 Polylang 英文子域名迁移经历,总结了 W3TC Page Cache 多域名识别、旧 Polylang option 和旧全局样式对象缓存等问题的排查思路。
-
本文记录了将 WordPress 英文站从 `www` 主域名下的 `/en/` 路径迁移到 `en.shuijingwanwq.com` 子域名的完整实践。由于站点原有数千条标签 slug 转换、旧标签合并和专题重定向规则,不能简单使用一条通用 rewrite。最终通过“历史路径映射、最终域名转换、普通 `/en/` 兜底迁移”三层逻辑,实现旧英文标签和专题一次 301 到达最终英文地址,同时保留中文主域名规则与查询参数,并将 `www` 和 `en` 子域名后续产生的 301 规则分开维护。
