怎么把wp上的私密文章迁移到directus网站

52 次阅读

本文最后更新于 2026年5月19日。

将 WordPress 中的私密文章迁移到 Directus,通常需要经历 “导出—清洗—建模—导入” 四个核心阶段。由于 Directus 是 Headless CMS,它不会像 WP 那样自动处理前端路由,因此需要手动配置权限映射。

以下是具体的迁移方案:

1. 导出 WordPress 数据

推荐使用 WP 原生的导出功能,或者通过 REST API 获取数据:

  • 方法 A (推荐): 使用 WP 后台的 工具 -> 导出,选择“文章”,这会生成一个 XML 文件(WXR 格式)。

  • 方法 B (开发者优先): 使用 WP REST API 获取数据,这样可以直接拿到 JSON 格式,方便后续处理。

    • 注意:获取“私密”文章需要经过身份验证(如使用 Application Passwords)。

    • 端点:GET /wp-v2/posts?status=private


2. 在 Directus 中建立数据模型

在 Directus 仪表盘中创建一个新的 Collection(例如 posts),并根据 WP 的结构建立字段:

  • title (Input)

  • content (WYSIWYG 或 Markdown)

  • slug (Input)

  • publish_date (Datetime)

  • status (Dropdown) — 设置选项为 published, draft, private


3. 数据转换与清洗

由于 WordPress 导出的 XML 或 JSON 包含很多冗余元数据(如 guid, comment_status 等),你需要编写一个简单的脚本(Python 或 Go)进行转换:

  • HTML 处理: WP 的文章通常包含大量的 wp-block 标签,建议将其清理为标准 HTML 或 Markdown。

  • 私密状态映射: 确保将 WP 的 post_status: private 映射到 Directus 中对应的字段值。


4. 导入到 Directus

你可以使用 Directus 官方提供的工具:

  1. CSV 导入: 如果文章数量不多,将数据处理成 CSV 文件,在 Directus 界面直接点击 Import

  2. API 导入 (推荐): 使用 Python 或 Node.js 遍历处理好的 JSON 数据,通过 POST /items/posts 写入。


5. 实现“私密”权限(关键步骤)

Directus 默认不区分 WP 那种“私密文章”的概念,你需要通过权限系统来实现:

  1. 创建角色: 在 Directus 的 Project Settings -> Roles & Permissions 中创建一个角色(例如 Member)。

  2. 设置权限:

    • 针对 Public 角色:设置过滤条件,仅允许读取 status 等于 published 的文章。

    • 针对 Member 角色:允许读取 status 等于 publishedprivate 的文章。

  3. 鉴权: 在你的前端网站中,通过 Directus SDK 传递用户的 Access Token,只有验证通过的用户才能调取状态为 private 的内容。


提示:关于媒体文件

WP 的文章内图片通常存储在 wp-content/uploads。迁移时:

  • 建议将图片上传到 Directus 的 Files Library

  • 上传后,需要批量替换文章 HTML 内容中的 <img> 标签源码,将旧的 WP URL 指向 Directus 的文件 UUID URL。