← 所有作品
迁移Astro 案例研究 · 2025

D'SKIN — WordPress 到 Astro 迁移

为智利护肤品牌完成网站迁移,从 WordPress 迁移到现代 Astro + TinaCMS 技术栈,使用无头 WooCommerce 处理电子商务。

访问网站 ↗
§01 · 概述
技术栈
  • Astro
  • TinaCMS
  • React
  • TypeScript
  • Vercel
  • WooCommerce API
  • Lenis
角色
  • 全栈开发者
时间线
  • December 2025
客户
  • D'SKIN
  • Chile
范围
  • 从 WordPress 迁移到 Astro + TinaCMS,采用无头 WooCommerce
  • 为营销团队提供可视化内容编辑
  • 双语支持(ES/EN)与完整 i18n
  • 性能:Lighthouse 从 62 提升到 98
§02 · 详情

挑战

D’SKIN 是一家智利天然化妆品品牌,其现有的 WordPress + WooCommerce 网站已经显得过时。客户需要一个更快、更现代的网络形象,同时保持轻松管理内容的能力和电子商务功能。

主要目标是:

  • 大幅提升页面速度和 Core Web Vitals
  • 为营销团队提供可视化内容编辑体验
  • 保留 WooCommerce 用于产品管理和结账
  • 支持双语内容(西班牙语/英语)
  • 现代高端的美学设计,体现品牌的天然护肤身份

解决方案

我设计了一个混合架构:Astro 作为前端,配合 TinaCMS 进行可视化内容编辑,同时保持 WordPress + WooCommerce 作为无头后端处理产品数据和结账。

┌─────────────────┐   ┌──────────────┐   ┌─────────────────┐
│  Astro 网站     │──▶│   TinaCMS    │──▶│   静态构建      │
│  (前端)         │   │  (内容)      │   │   (Vercel)      │
└─────────────────┘   └──────────────┘   └─────────────────┘


┌─────────────────┐
│   WordPress     │
│   WooCommerce   │
│   (产品)        │
└─────────────────┘

实现的关键功能

双语支持 (ES/EN) — 完整的 i18n 实现,西班牙语为默认语言:

  • 英文路由在 /en/*,完整翻译
  • 按语言分离的内容集合(每种语言 26+ 篇博客文章)
  • 本地化的 UI 元素、日期、货币格式和导航
  • 按语言的 SEO 元标签

TinaCMS 可视化内容管理 — 分屏实时预览编辑,带可视指示器的可编辑区域:

  • 主页英雄轮播(4 个可配置产品)
  • 畅销产品区域与 WooCommerce 集成
  • 关于页面及团队画廊
  • 护理服务目录
  • 博客文章富文本编辑

电子商务集成 — 实时的产品数据与结账衔接:

  • 从 WooCommerce REST API 实时获取产品目录
  • 客户端购物车抽屉,使用 localStorage 持久化
  • 多产品购物车转移到 WooCommerce 结账
  • Astro 和 WordPress 之间的 SSO 认证(HMAC-SHA256 签名令牌)
  • 库存状态和价格自动同步
  • API 不可用时的降级机制

交互组件 — 面向内容与转化的交互模块:

  • 购物车抽屉(桌面 380px 侧边栏,移动端全宽)
  • 可配置产品的英雄轮播
  • Google 评价轮播
  • 动态 Instagram 信息流集成
  • WhatsApp 悬浮按钮
  • Lenis 平滑滚动

性能优化 — 以静态生成和按需水合为核心:

  • 使用 Astro 的部分水合进行静态站点生成
  • React 组件仅在需要时水合(client:loadclient:visible
  • 图片优化并通过 Vercel 边缘 CDN 分发
  • Lighthouse 分数稳定在 95+

成果

迁移带来了显著改进:

  • 页面加载时间: 从 4.2 秒降至 1 秒以下 (LCP)
  • Lighthouse 分数: 从 62 提升到 98(性能)
  • 内容更新: 从依赖开发者变为可视化自助服务
  • 托管成本: 迁移到 Vercel 后降低 60%

客户的营销团队现在可以在没有技术支持的情况下更新博客文章、护理描述、产品展示和页面内容,同时网站为访问者几乎即时加载。

技术亮点

TinaCMS 可视化编辑 — 自定义 React 包装器通过 useTina() hook 实现实时预览:

// 可视化编辑包装器示例
export default function BestSellersWrapper({ query, variables, data, products }) {
  const { data: tinaData } = useTina({ query, variables, data });
  return (
    <section data-tina-field={tinaField(bestSellers, 'title')}>
      {/* 带可视指示器的可编辑内容 */}
    </section>
  );
}

WooCommerce API 集成 — 实时产品数据,优雅降级:

// 获取畅销产品
const products = await getBestSellers(3);

// 按 ID 获取特定产品
const products = await getProductsByIds([7183, 7176, 7868]);

// 格式化为智利价格格式
formatPrice(21990); // "$21.990"

购物车转移系统 — 自定义 WordPress 插件处理带 SSO 的多产品购物车转移:

  • 签名令牌(有效期 5 分钟)使用共享密钥
  • 在 WordPress 上自动创建用户会话
  • 无缝结账体验

技术栈

技术用途
Astro 5.x带岛屿架构的静态站点生成器
TinaCMS 3.xGit 支持的可视化编辑
React交互组件(购物车、画廊、轮播)
TypeScript类型安全开发
Lenis高级平滑滚动
Vercel自动部署托管
WooCommerce REST API无头产品管理

这个项目展示了如何用无头架构现代化传统 WordPress 网站,结合静态站点性能的优势、可视化 CMS 的灵活性和 WooCommerce 在电子商务方面的稳健性。

类似的项目吗?