Files
cms-SiteForge/docs/V8_20_COMPLEX_WORDPRESS.md
浅念 601451f22b upgrade: adopt V8.21.3 (V8.13→8.21.3: P5 SFTP/S3, P6 multilingual, editor overhaul, enterprise hardening)
Overlay ~150 upstream items onto our V8.12 base, preserving trade-pro
theme, registry tests, and design docs. Re-applied our patch set
(discovery/env_for/blocks.css/type-mapping/theme_color/frontend entries,
test_theme_pro_v3 mods) — all anchors survived upstream evolution.

New platform enhancement (fixes upgrade-introduced regression):
multilingual.site_locale now honors settings_json.locale, plus
PUT /api/i18n/sites/{id}/locale — standalone English sites get
<html lang='en'> under the V8.15 locale-rewrite pipeline.

compose: adopt V8.21.3 (image 8.21.3-dev.1, /api/ready probes, MySQL/S3
env) with project name pinned to siteforge-v8-10 (data volumes).

Tests: 356 passed / 11 failed — all 11 confirmed pre-existing in
pristine V8.21.3 on this host (10 upstream Windows env + our build test
now green after locale fix). Patch registry updated in plan doc.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-23 12:31:03 +08:00

4.4 KiB
Raw Permalink Blame History

SiteForge Enterprise V8.20 — WordPress 复杂迁移增强

版本:8.20.0-dev.1。此版本属于开发集成版,在 V8.19 完整源码上增加离线兼容预检、简单 ACF Repeater 结构保留、CSS 背景图本地化、批次暂存路径阻断。不代表复杂 Elementor/ACF/WooCommerce 功能或设计已实现无损迁移。

1. 新增实际功能

  • 新增 app/wp_complex_v820.py,使用 defusedxml 安全解析最多 16 MB、20,000 条记录的 WXR,按已发布内容发现 URL 冲突、动态参数 URL、复杂 Elementor、ACF 字段、PHP 序列化、自定义文章类型、WooCommerce 和动态短代码。
  • 新增后台 POST /api/migrations/sites/{site_id}/wordpress/wxr-preflight:multipart/form-data 的 file 字段,登录、CSRF 和站点 Editor 权限均必需。只读返回 JSON,不写站点数据,不访问外网。
  • 现有 /production-v8 WordPress 面板新增“兼容性预检”按钮和结果区。
  • app/importers.py 直接 WXR 导入:带参数的动态 URL 或缺失原始路径现在拒绝导入,不再凭 slug 猜测路径;ACF 简单 Repeater 结构保留在 meta.fields 和 meta.acf_repeaters 中,原始字段仍保留供核对。
  • app/v8_workflows.py WXR 暂存:复用预检阻断危险旧 URL;不再将自定义文章类型错当成分类;复杂组件形成发布审核项。
  • app/wp_migration_v82.py 媒体本地化扩展至行内 CSS url(https://...)、data-background、data-background-image 与已有 srcset。只允许已授权主机的资源进入自动下载,其他 URL 需要单独审核。
  • 新增 scripts/wp_v820_preflight.py:离线生成 JSON/HTML 风险报告;可选 --dist 对比静态 HTML 路径覆盖。

2. 直接运行

在项目根目录:

python scripts/wp_v820_preflight.py fixtures/v820/wordPress-complex-sample.xml --output reports/v820-demo.json
# 可选,待已经执行静态构建后:
python scripts/wp_v820_preflight.py export.xml --dist /absolute/path/to/build/dist --output reports/my-site.json

脚本返回码:0 表示没有识别到阻断问题且(如指定 --dist)没有发现缺失的 HTML 路径;1 表示出现阻断或缺失路径;2 表示输入、读取或 XML 解析失败。退出码 0 不意味着布局或业务功能无损,人工审核仍是发布条件。

在统一后台选择网站 → 网站生产控制台 → WordPress 迁移 → 选择 WXR 文件 → 点击“检查旧 URL / Elementor / ACF / 动态功能”。

3. 风险与未完成项目

方向 当前实现 未完成的生产验收
Elementor 识别已支持/未知组件,有限静态 HTML 转换,保留原始 JSON 容器布局、动态标签、全局样式、响应式精确还原、交互插件
ACF 单值字段、简单 Repeater 的有界结构提取;PHP 序列化只标记,不执行 字段组 schema、Flexible Content、嵌套 Repeater、关系字段、文件字段
WooCommerce 识别产品相关数据并列入审核 变体、价格策略、库存、购物车、结算、订单等动态服务
媒体 同源 HTTPS/HTTP 图片与 CSS 背景图引用分析及本地化 跨域 CDN 授权、尺寸变体资源、未引用附件、CSS 外链文件及版权许可
URL/SEO WXR 旧路径预检,静态构建路径核查,原有 SEO 差异工具 真正旧站的完整 Sitemap + robots + 分页 + 301 + Canonical 实测核对
插件功能 表单、动态短代码、iframe 标为风险 CRM/表单业务重建与实际浏览器 E2E

WXR XML 不包含附件原文件,也不包含完整站点设置和全部插件配置;需另行取得对应 WordPress 资源以及已获授权的插件数据。

4. 迁移作业建议

先备份 WordPress 原站、数据库与媒体文件;离线预检 WXR 和 Sitemap;修复阻断问题后按站点逐步暂存/提交数据;迁移 CSS/响应式图片及全部媒体;新旧站逐 URL 对账,再在独立预生产环境实测 PC/移动端布局、交互、SEO、动态表单及发布回滚。上线前必须完成每一个已识别风险的人工复核。

5. 测试证据边界

自动化使用本地固定 WXR、TestClient 和模拟媒体,禁止把这些结果描述为真实客户网站的迁移通过。V8.18 生产 PostgreSQL/Redis/Docker 多 Worker 与 Art Design Pro 官方工程编译仍未完成真实现场验收。本包不会自行连接或更改用户的生产网站。