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

分类: Polylang

  • 一份用于同步 Polylang 中英文标签的批处理脚本,长期存在 WordPress 后台标签总数与脚本读取结果不一致的问题。此前两次排查分别修复了 Polylang 翻译关系缓存残留和动态分页导致的数据集变化,但问题仍会复发。最终通过对比 WP-CLI 与直接 PHP 执行环境,确认根因是 get_terms() 命中了持久化的旧 WP_Term_Query 查询缓存。脚本在源标签查询中加入 ‘cache_results’ => false 后,终于从旧的 8915 个标签恢复为正确的 8928 个。本文记录完整排查过程,并总结多语言数据维护脚本在缓存、运行上下文、统计验证和幂等性方面的实践经验。

  • 在 WordPress、Polylang、W3 Total Cache、Redis 与多域名架构下,后台通过 admin 子域名发布文章或清理缓存后,www 与 en 前台仍可能读取旧的页面缓存和对象缓存。本文通过对比源站、CDN、WP_Query 与 Redis 缓存结果,定位到 W3TC 按 Host 隔离对象缓存的问题,并利用缓存组版本机制,配合自定义 MU Plugin,实现语言首页、文章查询缓存及 WPCode 配置缓存的跨域同步失效,同时保留中英文站必要的缓存隔离。

  • 近期博客先后启用了英文子域名、独立后台域名、多 CDN、W3 Total Cache Page Cache 与 Redis Object Cache,并针对 Polylang、W3TC、TMS Extensions for Polylang、SlyTranslate 等兼容问题增加了多项调整。随着缓存失效、语言识别和插件升级风险逐渐显现,本文暂停继续增加补丁,对现有多域名架构进行一次阶段性复盘,明确哪些组件继续保留、哪些第三方插件源码修改需要撤销,以及后续应按照“改动盘点、恢复 W3TC 缓存闭环、实现多语言一键清理、最后接入 EdgeOne 与 Cloudflare 自动刷新”的顺序推进,使整套方案重新变得可控、可维护并具备复用价值。

  • 本文记录 WordPress + Polylang 英文站从 /en/ 迁移至独立子域名后,对首页和分类归档页错误链接的完整排查与修复过程。问题涉及分类下拉列表仍使用中文主域名、站点标题和面包屑 Home 指向默认语言首页、导航与侧栏保留旧 /en/ 链接,以及 W3 Total Cache Object Cache 导致英文 Host 无法及时加载最新 WPCode 片段。最终通过前端事件补丁、区块模板链接调整、按 Host 刷新对象缓存及源站验证,恢复英文站分类、导航、面包屑和多域名链接的正确跳转。

  • 本文记录了 WordPress 英文站日历链接被错误拼接为双重 URL 的完整排查过程。问题最初源于旧版 WPCode 代码仍按 `/en/` 目录模式处理链接,在英文站迁移到 `en.shuijingwanwq.com` 后,将完整子域名 URL 再次拼接到旧地址后方。代码升级为兼容 Polylang 多域名模式的版本后,英文 Host 仍因 W3 Total Cache Object Cache 中的旧状态继续执行旧代码。最终通过按 `en.shuijingwanwq.com` Host 加载 WordPress 并调用 W3TC 对象缓存清理接口,使新版代码立即生效,日历链接恢复正常,并将清理流程整理为可重复使用的服务器脚本。

  • 本文记录了一次 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 + Polylang 英文站从路径模式 /en/ 迁移到独立子域名 en.shuijingwanwq.com 的完整排查过程。迁移过程中并不是简单修改 Polylang URL 设置就结束了,而是连续遇到了 Polylang 保存失败、扩展插件 Fatal Error、W3 Total Cache 将英文子域名误判为 foreign domain 并 301 回主域名、Redis Object Cache 缓存旧语言配置等问题。最终通过修复 Polylang 扩展插件、添加 W3TC 兼容 mu-plugin、清理 Redis 对象缓存,并验证 html lang、canonical、hreflang 和 W3TC 页面缓存文件,完成了英文子域名的源站侧迁移。

  • 这篇文章记录了我重新启用 Yoast SEO 免费版后,如何在不增加日常写作负担的前提下,通过全局设置完善 WordPress 博客的基础 SEO 输出。内容包括文章与页面使用摘录生成 Meta Description、首页单独设置描述、分类/标签/系列统一标题与描述模板、中英文站点字符串翻译、低数量标签 noindex、作者归档、日期归档、媒体页面、Schema、RSS、站点地图等设置取舍。最终目标是让博客在保持低维护的同时,获得更完整、更稳定的 SEO 基础结构。

  • 这篇文章基于前一篇将 WordPress `/wp-content/uploads/` 媒体库资源迁移到 `media.shuijingwanwq.com + Cloudflare` 的实践,继续分析 EdgeOne 流量成本控制问题。通过 EdgeOne 指标发现,虽然 uploads 图片和附件已经从 EdgeOne 拆出,但 `www.shuijingwanwq.com/en/` 英文路径仍占今日 EdgeOne 流量约三分之一。文章进一步评估了页面缓存、Bot 流量、`/en/` 路径占比、Nginx 现有 301 规则冲突风险,以及将英文站迁移到 `en.shuijingwanwq.com + Cloudflare` 的收益与代价。最终结论是:英文站拆分到子域名有助于显著降低 EdgeOne 流量,但不能仓促执行,需要先确认 Polylang、多语言链接、canonical、hreflang、sitemap、Cloudflare 接入和 301 跳转规则,确保旧 `/en/*` 路径能够一次跳转到最终英文子域名地址。

  • 本文记录了使用 Polylang 插件进行中英文标签同步时,批量翻译脚本出现间歇性计数不准确问题的排查与修复过程。问题源于处理过程中创建新标签导致动态分页查询获取错误数据。最终通过使用 Polylang API 提前获取静态 ID 列表并配合 array_chunk 进行分批处理,有效避免了数据库变动的影响,确保了脚本计数的准确性与执行的稳定性。

👨‍💻 个人品牌

王世强|PHP / Go 技术顾问

15+ 年 Web 后端开发经验,专注于系统维护、架构优化、性能调优及 Linux 运维。

持续运营技术博客 10+ 年,累计发布 1000+ 篇原创技术文章。

为创业团队、中小企业及独立开发者提供长期技术支持与远程合作服务。

👉 关于我 & 合作

.env (14) 404 (13) add (16) AI 翻译 (29) Apache (13) Array (19) A Tour of Go (49) Cache (13) CentOS (23) ChatGPT (18) ChatGPT Plus (14) chrome (19) Cloudflare (28) Codex (14) composer (42) composer.json (22) composer install (13) composer update (14) console (16) Container (25) curl (15) delete (31) Docker (32) Dockerfile (15) EdgeOne (31) environment variable (19) error (24) file (15) filter (20) Git (27) GitHub (23) Gitlab (15) GLM-5.2 (26) Go (54) Google AdSense (23) Go 语言 (23) GraphQL (24) GraphQL API (14) Gutenberg (34) http (21) https (22) Interface (19) Jquery (13) json (24) Laravel (37) Laravel 6 (55) Laravel 9 (25) Lighthouse (17) Lighthouse 5 (14) Linux (21) Migrate (13) Module (17) MySQL (78) MySQL 5.7 (22) Nginx (63) normalize.css (28) OKX (15) OneinStack (21) PHP (67) php-fpm (18) php.ini (24) PHP 7.1.12 (22) PHP 7.4 (26) phpmyadmin (15) PhpStorm (24) Polylang (57) postman (18) Query (17) queue (16) Rancher (24) Redis (49) response (13) RESTful (27) RESTful API (23) Shell (13) Shopify (19) SlyTranslate (20) SQL (24) String (14) TortoiseGit (14) Twenty Twenty-Five (20) Ubuntu (40) update (20) VPN (17) W3 Total Cache (35) Windows 10 (46) WireGuard (27) WordPress (126) WordPress 多语言 (13) WPCode (23) Wstunnel (14) Yii (40) Yii 2 (70) Yii 2.0 (51) 多语言翻译 (28) 技术博客 (15) 故障排查 (14) 数据库迁移 (16) 浏览器 (14) 阿里云 (19)

2026 年 8 月
 12
3456789
10111213141516
17181920212223
24252627282930
31