拆分 WordPress Multisite:将子站点迁移到独立的单一安装

Splitting a WordPress Multisite Feature Image 1540x840 1

WordPress 多站点网络提供了灵活性,但子站点通常需要独立的单一安装来满足客户需求、扩展或简化管理。分离子站点很复杂,因为 Multisite 具有独特的数据库结构,使得手动迁移容易出错,尤其是在处理序列化数据时。在本文中,我们将介绍使用 WP Migrate Lite 迁移子站点的精确步骤,并讨论 WP Migrate 提供的高级自动化和节省时间的功能。

Multisite 子站点数据的独特性质

迁移子站点并不是简单的复制粘贴工作,因为 WordPress Multisite 存储数据的方式与单一 WordPress 安装不同,多站点网络使用共享和独特数据库表的组合。

  • 共享表: 主网络(站点 ID 1)使用标准的 WordPress 表,如 wp_optionswp_userswp_usermetawp_posts 等。这些表通常包含与整个网络相关的数据或默认设置。
  • 子站点独有表: 网络中的每个子站点都有一组专属的表。这些表以 wp_X_ 为前缀,其中 X 代表该特定子站点的唯一数字 ID(例如 wp_2_postswp_3_options)。这些表保存该子站点特有的所有内容、设置和用户数据。

这里的精确性至关重要。成功的拆分需要仔细提取与子站点相关的数据。这包括其 wp_X_ 表,以及(如果您打算与子站点一起迁移特定用户)wp_userswp_usermeta 表的子集。此外,精确的 URL 替换对于防止迁移后链接损坏和内容损坏至关重要。

尝试使用原始 SQL 导出和基本的查找替换操作手动执行此操作风险很高。WordPress 以序列化格式存储大量数据。这意味着简单的文本替换可能会损坏数据结构,导致小部件、主题设置和插件配置损坏。这就是像 WP Migrate 这样的工具变得不可或缺的原因,因为它们专门设计用于在迁移过程中安全处理序列化数据。

迁移前检查清单:必要的准备工作

充分的准备对任何迁移都至关重要。跳过这些步骤可能导致数据丢失或后续的重大麻烦。

1. 创建整个多站点网络的完整备份

这是最关键的一步。在您操作任何内容之前,请创建整个多站点网络的完整备份。这包括:

  • 所有数据库表: 共享表和子站点特定表。
  • 所有文件: 您的 wp-content 目录(主题、插件、上传)、核心 WordPress 文件和任何自定义文件(例如 .htaccesswp-config.php)。

对于完整站点备份,请考虑您主机提供商的备份解决方案或专用备份插件。此备份是您的安全网,让您可以在出现问题时回滚。

2. 选择目标环境

确定您的子站点将作为单一安装驻留的位置。这可能是新的主机提供商和域名、现有主机上的新域名,或本地开发环境如 Local。值得注意的是,Local 与 WP Migrate 集成

确保您选择的目标满足最低 WordPress 要求(PHP 版本、MySQL 版本等)。

3. 创建全新的 WordPress 单一站点安装

在您选择的目标站点上,执行一个全新的 WordPress 安装。关键是要使用全新安装,不包含任何现有内容、主题或插件(默认插件除外)。这可以为您的迁移子站点数据提供一个干净的起点。

4. 在两个站点上安装 WP Migrate Lite

为了顺利进行迁移,您需要在源站点的多站点网络和目标单站点上安装并激活 WP Migrate Lite。

在两端都安装 WP Migrate Lite 可以实现从多站点的顺利导出,并为接收传入数据做好准备。

分步指南:使用 WP Migrate Lite 迁移子站点

现在准备工作已经完成,让我们深入了解使用 WP Migrate Lite 进行核心迁移的过程。

从多站点导出子站点数据库

第一个关键步骤是准确地从您的多站点网络导出仅需要的数据库表。

访问 WP Migrate Lite

登录到您的多站点网络的 WordPress 管理区域。导航到 Settings > WP Migrate 进入 WP Migrate Lite 仪表板。

定位子站点的数据库表

这是多站点分离最关键的部分。您必须只选择与您正在迁移的特定子站点相关的表。

要查找您的子站点的唯一 ID,请转到 Sites > All Sites。将鼠标悬停在您打算迁移的子站点上,其 ID 将出现在 URL 预览中(例如,site-edit.php?id=X,其中 X 是 ID)。

Multisite to Single Site Finding Site ID

接下来,返回 WP Migrate 界面。点击 Migrate 选项卡,然后点击 Export。打开 "Tables" 下拉菜单,点击 Export only selected tables below

WP Migrate 默认会选择所有表。您当然可以手动取消选择您不想要迁移的表,但可能更容易的做法是点击 Deselect All,然后只选择以 wp_X_ 开头的表(其中 X 是您子站点的 ID)。也就是说,如果您的子站点 ID 是 2,您应该选择像 wp_2_postswp_2_optionswp_2_terms 这样的表。

此外,如果您打算将该子站点的现有用户(以及可能的其他用户)迁移到新的单站点安装,通常需要包含主网络的 wp_userswp_usermeta 表。如果您计划在目标站点创建新用户且只需要子站点的内容,可以省略这些表。

Multisite to Subsite Database Tables

配置 URL 的查找和替换

WP Migrate 的查找和替换功能对于将旧子站点 URL 的所有实例更新为新的单站点 URL 至关重要。

在 "Find" 字段中,输入您的子站点在多站点网络上的完整 URL。这可以是子目录(例如 https://your-main-domain.com/subsite-name/)或子域名(例如 https://subsite.your-main-domain.com/)。在 "Replace" 字段中,输入您的新单站点安装的完整 URL,例如 https://new-subsite-domain.com/。WP Migrate 在此过程中自动管理序列化数据,确保不会发生数据损坏。

配置导出选项

配置导出选项时,插件默认会生成一个 SQL 文件。“高级选项”部分提供了复选框来优化此 SQL 导出。您可以选择排除垃圾评论排除临时数据以帮助保持新数据库更清洁并减小其大小。“使用 gzip 压缩文件”选项将创建一个更小的 .gz 归档文件。

“替换 GUID”复选框默认已勾选。GUID 通常在生产网站上不会更改,但在将子站点从多站点分割为新的独立安装的特定情况下,建议更新 GUID。这可以确保新站点的内容正确引用其新域名,并保持与旧多站点结构的独立性。

Multisite to Single Site Advanced Options

开始导出

最后,点击导出开始导出。WP Migrate Lite 将处理所选表,生成 SQL 文件并将其下载到您的本地计算机。此文件包含子站点的所有数据库内容,并已使用新 URL 进行了预处理。

准备并导入到新的单一站点

导出子站点的数据库后,下一步是准备您新的单一 WordPress 安装并导入数据。

访问新站点的数据库

登录 phpMyAdmin 或您托管服务商的等效数据库管理工具,访问新的、全新的单一 WordPress 安装。确保已连接到与您新站点关联的正确数据库。

清除现有表

这是一个关键步骤。在导入子站点的数据之前,您必须清除新数据库中的现有表。在此请极其谨慎操作,因为这将永久删除所选数据库中的所有数据。选择新单一站点数据库中的所有表(通常带有 wp_ 前缀),然后使用“删除”功能将其移除。这将为即将导入的子站点数据创建一个干净的起点。

导入并验证

您使用的具体方法取决于您使用的工具和/或您的托管商。

导入完成后,简要浏览新数据库中的表。您现在应该会看到子站点的表(WP Migrate 在导出期间自动将其重新前缀为标准 wp_),其中包含您子站点的内容。

迁移媒体文件、主题和插件

WP Migrate Lite 让您可以选择从仪表板中导出媒体文件、主题、插件和 WordPress 核心文件。但是,在将站点从多站点安装分割出来的特定情况下,使用 Lite 版本迁移媒体文件、主题和插件需要手动步骤。此方法可确保对子站点的特定资源进行精确控制,并避免在使用完整站点导出功能进行多站点分割时可能出现的复杂性。

WP Migrate 允许您使用 .gitignore 模式从迁移中排除特定文件,但这不会在导出期间将文件路径从多站点结构转换为单一站点结构。

对于多站点子站点,手动迁移可确保您仅正确提取子站点的媒体(来自其独特的 wp-content/uploads/sites/X/ 目录)并将其放置到新单一站点的标准 wp-content/uploads/ 目录中。同样,虽然 WP Migrate Lite 允许选择单独的主题和插件进行导出,但在子站点分割后确保它们的无缝集成和正确路径配置,最好是安装新副本或手动放置它们。

媒体文件

子站点的媒体文件存储在多站点 wp-content/uploads/ 目录中的特定位置。要传输这些文件,请通过 FTP 或 SFTP 连接到您的多站点网络。

导航到 wp-content/uploads/sites/X/ 目录,其中 X 代表您子站点的唯一ID。将此 sites/X/ 文件夹的全部内容下载到本地计算机。

下载完成后,通过 FTP 或 SFTP 连接到您的新单站点。将之前下载的媒体文件直接上传到新站点的 wp-content/uploads/ 目录。在标准的单站点安装中,不再需要 sites/X/ 结构。

主题

首先,识别在多站点网络中您的子站点上激活的主题。转移主题最可靠的方法是通过 WordPress 管理界面直接在您的新单站点上安装相同主题的全新副本。如果是自定义主题,您需要从多站点的 wp-content/themes/ 下载主题文件夹,然后将其上传到新单站点的 wp-content/themes/。主题成功转移到新站点后,从 WordPress 管理后台的外观 > 主题部分激活它。

插件

首先,列出在多站点网络中您的子站点上激活的所有插件。与主题类似,最佳做法是直接在您的新单站点上安装这些插件的全新副本。对于任何自定义或高级插件,从多站点的 wp-content/plugins/ 下载它们的相应文件夹,然后将其上传到新单站点的 wp-content/plugins/。安装后,从新 WordPress 管理后台的“插件”部分激活必要的插件。

迁移后步骤

数据库和文件就位后,需要执行几个最后步骤以确保您的新单站点正常运行。

重新保存固定链接

这是刷新 WordPress 重写规则的关键步骤。登录新单站点的 WordPress 管理后台,进入设置 > 固定链接,点击保存更改。您无需对固定链接结构进行任何实际更改,保存操作即可重新生成 .htaccess 文件或 Nginx 的等效规则。

全面测试

投入时间全面测试您新迁移的站点。浏览所有页面和帖子,确保内容正确显示。检查所有内部链接、图片和嵌入媒体,确认它们指向新域。测试表单、评论以及您子站点特有的任何自定义功能,并验证用户登录和角色。

删除旧子站点

一旦您绝对确信您的新单站点完全正常运行并稳定后,您可以安全地从多站点网络中删除原始子站点。此步骤仅应在广泛测试并确认迁移成功后执行。

使用 WP Migrate 简化并自动化流程

WP Migrate Lite 为您提供了分离多站点子站点的良好基础,但 WP Migrate 凭借节省时间的功能和强大的自动化功能,使整个过程变得轻而易举,这对专业开发者和代理公司来说非常宝贵。这些高级优势将多步骤手动流程转变为精简的、通常只需点击一次的操作。

一键推送/拉取子站点

这可以说是 WP Migrate Pro 提供的最重大变革,特别是通过其 Multisite Tools 插件。

无需手动导出数据库、清除表、导入,然后通过 FTP 单独传输文件,WP Migrate 允许您直接将子站点从您的网络“推送”到全新的单站点安装。相反,您也可以将单站点“拉取”到您网络上的子站点。

此功能可自动完成两个站点之间的整个数据库和文件传输流程,无需繁琐地手动通过FTP传输媒体、主题和插件。它智能地处理所有底层复杂性,包括序列化数据,使迁移过程极其高效,且更不易出现人为错误。

自动化文件迁移

除了数据库之外,WP Migrate还能无缝处理所有相关文件的完整传输。这意味着您的媒体库、已启用的主题和已安装的插件可以直接在您的多站点和新独立安装之间进行迁移。这种自动化文件处理无需再手动从 wp-content/uploads/sites/X/ 下载并重新上传到新站点的 wp-content/uploads/ 目录,从而节省了大量时间,并确保所有资源在新的独立站点上正确链接且可用。

WP-CLI 脚本集成

对于管理大量迁移或将其集成到部署工作流程中的开发人员,WP Migrate 的 WP-CLI 集成 是一个强大的工具。这允许您从命令行执行和自动化整个迁移过程。您可以编写复杂的迁移脚本,使其对于重复任务、持续集成或管理大规模部署非常高效,无需与 WordPress 管理界面交互。

精细控制和定向迁移

WP Migrate 为您的迁移提供了更精细的控制。虽然 WP Migrate Lite 允许选择表,但高级版本提供了更高级的选项,可以精确地包含或排除特定的数据库表,甚至特定的帖子类型。这种精细控制对于复杂场景特别有用,在这些场景中您只需要迁移数据子集,确保您新的独立站点从一开始就是尽可能精简和优化的。

总结

使用正确的工具,将子站点从多站点网络分离出来变得更加简单。WP Migrate Lite 提供了数据库导出、智能 URL 替换和手动文件传输的基本功能。

对于专业开发人员和代理公司,WP Migrate 的高级版本提供了更高的自动化和效率。它的一键推送/拉取功能、自动化文件迁移、WP-CLI 集成以及对数据的精细控制,确保即使最具挑战性的多站点分离也能成为无缝操作。

您是否已将多站点的部分内容分离到单站点安装中?进展如何,您使用了哪些工具?请在评论中告诉我们!

分享你的喜爱

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注