
WordPress多站点是一个强大的工具,对于诸如由代理机构管理的客户站点、大学院系或需要多个相关站点的大型企业结构都非常有用。然而,将现有的独立站点迁移到该网络中可能是一个真正的麻烦事,涉及复杂的数据库合并和文件处理。
在本文中,我们将介绍两种迁移方法:使用WP Migrate Lite辅助的手动方法,以及使用WP Migrate的半自动方法。
什么是WordPress多站点?
多站点是WordPress的一个功能,允许您从单个WordPress安装运行多个独立的WordPress网站。它允许您:
- 集中管理:从一个管理面板处理整个网络的核心更新、主题和插件。
- 共享资源:主题和插件可以安装一次,然后在网络内的多个站点上激活。
- 简化用户管理:用户通常可以在网络中的不同站点上拥有账户。
子域名与子目录
设置多站点网络时,一个关键的选择是您各个子站点的URL将如何构建。
- 子域名:您的子站点将作为主网络域名的子域名出现(例如,site1.yourdomain.com、site2.yourdomain.com)。这通常需要您的网络主机支持"通配符子域名",并可能涉及特定的DNS配置。
- 子目录:您的子站点将作为主网络域名的子文件夹出现(例如,yourdomain.com/site1、yourdomain.com/site2)。这更多地依赖于.htaccess规则,在共享托管上设置通常更简单。
这个决定在多站点设置过程的早期做出,之后通常很难更改,因此请根据您的主机功能和所需的URL结构明智地选择。
转换为多站点为何复杂
将现有的单个WordPress站点纳入多站点并非简单的拖放操作。最大的挑战在于合并数据库表、文件组织,以及确保URL和序列化字符串不会损坏。
- 数据库结构:单个站点使用一组简单的数据库表(例如,
wp_posts、wp_options)。然而,多站点使用全局表(例如,整个网络的wp_users和wp_usermeta),以及每个站点特有的表,使用独特的前缀(例如,wp_2_posts、wp_3_options)。正确合并这些表而不造成数据损坏是最大的障碍。 - 文件组织:单个站点中的媒体上传位于简单的
wp-content/uploads/文件夹中。在多站点中,每个子站点都有自己的专用文件夹,通常是wp-content/uploads/sites/[site_ID]/。 - URL和序列化数据:单个站点的数据库在其各处都包含旧的URL。当您将其移动到多站点子站点时,URL会发生变化。WordPress还以序列化格式存储复杂数据(如小部件设置、主题选项)。对这些字符串进行简单的查找和替换可能会破坏它们,导致功能损坏。
设置WordPress多站点
首先,您需要一个可用的WordPress多站点网络。我们建议在将其投入生产之前,在暂存站点或本地开发环境中测试一切。在Local中创建[WordPress多站点(https://localwp.com/help-docs/advanced/wordpress-multisite-with-local/#Creating-a-new-Multisite-in-Local)是快速启动和运行的一种方法。Local还集成了WP Migrate,我们将使用它来传输我们的数据库和文件。
接下来,创建所有网站的完整备份,包括您计划迁移的单个网站以及将成为多站点网络的新 WordPress 安装。你永远不知道什么时候会需要备份。
将单个站点迁移到多站点的艰难方式
本节概述了将单个 WordPress 站点转换为多站点子站点的过程,需要大量手动操作。虽然 WP Migrate Lite 可以帮助提供原始数据库导出,但绝大多数复杂的、多站点特定的调整将完全由您自己负责。
准备源站点
在提取数据之前,预先准备源站点始终是很好的做法。干净的数据库会让后续工作稍微不那么混乱。我们建议首先花时间清理数据库,删除不必要的数据,如垃圾评论、旧的文章修订、过期的临时数据以及任何未使用的主题或插件。这可以直接通过 phpMyAdmin 等工具在数据库中完成,也可以使用专门的清理插件完成。
清理完数据库后,您需要导出其内容。在您的单个 WordPress 站点上安装并激活 WP Migrate Lite,导航到 Tools > WP Migrate,然后点击 Migrate 选项卡。接下来,点击 Export。从那里,您可以选择只导出数据库,或执行“全站导出”,将数据库、媒体上传、主题、插件和其他 wp-content 文件打包成可下载的 ZIP 存档。

虽然 WP Migrate Lite 确实提供了“查找和替换”功能,可以安全地处理一般站点迁移的序列化数据(例如,将 http://olddomain.com 更改为 http://newdomain.com 以将单个站点迁移到新域名),但对于这个特定的多站点场景,您最终需要访问原始 .sql 文件进行复杂的手动编辑。无论您是只导出数据库还是导出完整的站点 ZIP 包,您都将进入下一个最具挑战性的步骤。
手动数据库转换
这是真正挑战的开始,即使是一点点失误也可能导致站点完全损坏。您将直接处理包含站点数据库的原始 SQL 文件,因此在开始之前一定要有该文件的全新备份。对于这个复杂的过程,您需要一个强大的文本编辑器,如 VS Code、Sublime Text 或 Notepad++,它可以处理大型文件并执行高级查找和替换操作。
第一个主要任务涉及手动调整数据库表前缀。您的单个站点的数据库表可能以 wp_ 开头(例如,wp_posts、wp_options)。在多站点环境中,每个子站点需要一个唯一的前缀,通常是 wp_[子站点_ID]_(如 wp_2_posts 或 wp_3_options)。您必须进入数据库的 .sql 文件,对旧表前缀的每个实例进行 meticulous 全局查找和替换,将其替换为新子站点的前缀。
现在,这里有一个巨大的、关键的风险:虽然 WP Migrate Lite 内置的查找和替换功能在您只更改单个站点上下文中的 URL 时可以安全地处理序列化数据,但它并不专门设计用于自动适应将单个站点迁移到多站点子站点时所需的复杂表前缀更改。WordPress 以序列化格式存储复杂数据,如小工具设置、插件选项和各种数组数据。如果您在序列化字符串上执行简单的文本替换并更改其长度,您将损坏这些数据。这通常会导致小工具损坏、插件无法运行,以及新子站点上的设置丢失,因为标准文本编辑器不理解序列化数据长度的复杂性。
在遵循前缀更改之后,您将面临类似的 URL 和路径挑战。您导出的数据库中散布着对旧单个站点 URL 的引用。您需要执行另一系列全局查找和替换操作,将所有这些实例更新为反映您新子站点的 URL(如 http://multisite.com/subsite1 或 http://subsite1.multisite.com)。请确保您的目标 URL 与多站点选择的结构相匹配,无论是子目录的 http://multisite.com/subsite1 还是子域的 http://subsite1.multisite.com。
再次强调,如果您没有使用专门为多站点上下文内各种数据库结构中进行这些复杂的、对长度敏感的替换而设计的工具,那么损坏包含这些 URL 的序列化数据的危险就会一直存在。
接下来是用户数据合并这个特别棘手的问题。多站点使用全局的 wp_users 和 wp_usermeta 表,意味着整个网络的所有用户共享这两个表。当然,您的单个站点有自己的专用 wp_users 和 wp_usermeta 表。您绝对不能直接导入它们。
相反,您需要仔细只从您的单个站点导出用户表。然后,您必须手动检查它们。如果您的单个站点中的任何用户 ID 与多站点网络上现有的用户 ID 冲突,您将需要手动为单个站点的用户在其 wp_users 和 wp_usermeta 行中重新分配新的、唯一的 ID。之后,这些修改后的用户行必须仔细地合并到多站点的全局 wp_users 和 wp_usermeta 表中。
最后,这是一个通常需要编写复杂自定义 SQL 查询的步骤,您需要更新新前缀的 wp_X_posts 表中的 post_author 字段,以确保它们正确引用多站点全局 wp_users 表中的新用户 ID。除了这些主要的结构更改之外,您可能还会在某些选项表中手动调整 site_id 值,以确保一切正确指向新的子站点。
导入修改后的数据库
一旦您 painstakingly(不辞辛劳地)编辑了您的 SQL 文件,并仔细检查(再三检查!)了您的工作,就到了导入的时间。值得注意的是,WP Migrate Lite 不提供将任意 SQL 文件或完整站点 ZIP 存档导入到实时 WordPress 站点的仪表板内导入功能;它的导出设计为使用外部工具导入(或专门导入到 Local)。因此,您通常会使用 phpMyAdmin 等数据库管理工具。登录,选择与您的多站点安装关联的数据库,然后使用“导入”功能上传您手动编辑的 SQL 文件。这 often(经常)是关键时刻,您会希望不会出现任何错误。
手动文件传输和重组
数据库到位后,您的下一个主要任务是整理文件。即使您使用 WP Migrate Lite 生成了完整站点导出 ZIP,手动数据库编辑意味着您可能仍然需要在外部管理文件。
首先,通过FTP/SFTP连接到您的多站点。导航到 wp-content/uploads/ 目录。您会注意到这里有一个 sites/ 文件夹,在 sites/ 内部,您会找到以子站点ID命名的文件夹(例如 2/、3/)。然后,您需要将单个站点的 wp-content/uploads/ 文件夹中的所有媒体文件手动上传到相应的子站点指定目录(例如 wp-content/uploads/sites/[subsite_ID]/)。即使移动了文件,它们可能不会立即出现在子站点的媒体库中。您可能需要在该子站点上激活一个特定的插件来重新扫描并在数据库中注册这些文件。
除了媒体之外,您还需要手动上传旧单个站点使用的任何特定主题或插件(如果它们在多站点网络上还不可用的话)。上传后,您需要从新子站点的仪表板激活必要的主题和插件。
迁移后的清理和测试
即使您已经完美地完成了所有操作,也需要彻底检查新迁移的子站点。首先,清除多站点上的任何缓存插件,以及任何服务器端或CDN缓存。之后,进入新子站点的仪表板,导航到 设置 > 固定链接,点击 保存更改。这通常可以帮助重写子站点的固定链接规则并解决潜在的路由问题。
现在是最关键的部分:广泛的测试。不要仅仅因为站点加载正常就认为一切正常。您必须系统地访问所有页面和文章,以检查内容是否正确显示、图片是否加载,以及所有内部链接是否正常工作。测试站点上存在的任何表单,验证小工具和自定义器设置是否符合预期,并确保所有插件都正常运行且没有错误。至关重要的一点是,测试新子站点的用户登录和权限,并仔细检查所有媒体链接是否正确以及图片是否正常显示。
如您所见,手动执行此迁移是一项巨大的工程。即使有WP Migrate Lite这样的工具协助进行初始数据库导出及其一般序列化数据处理,缺乏特定的多站点集成意味着您需要处理极其复杂的手动任务。这需要深厚的技术专业知识、细致入微的关注,以及为您计划迁移的每个站点投入大量时间。数据损坏的风险仍然极高,尤其是在表前缀和URL更改后的序列化数据,以及合并用户表的复杂性。虽然从技术上讲这是可行的,但对大多数人来说是不切实际的,当然,如果您有一个以上的站点需要迁移,那就不可扩展了。
简化您的生活:使用WP Migrate将单个站点迁移到多站点
此方法利用WP Migrate强大的高级功能,特别是其“多站点工具”插件,来自动将单个站点迁移到多站点网络中最复杂且最容易出错的部分。您将很快看到所需时间、精力和技术专业知识的显著减少。
安装WP Migrate
首先您需要WP Migrate的“Plus”或“Premier”许可证,因为这些许可证包括多站点工具。
获得许可证后,在您的源单个WordPress站点和目标多站点网络上安装并激活WP Migrate插件。这个双重安装允许插件在两个站点之间建立安全连接,实现直接数据传输。
准备您的源站点
与繁重的手动方法相比,这里的源站点准备工作要简单得多。虽然进行常规清理(例如删除垃圾评论或旧版本)始终是更好的迁移实践,但WP Migrate强大的功能意味着您无需手动导出数据库或文件。该插件智能地处理URL和文件路径的查找和替换,安全地管理所有序列化数据而不会损坏。
准备目标多站点
设置WordPress多站点网络的基本步骤仍然是必不可少的。您需要正确配置并运行多站点环境。此外,与手动方法一样,您需要在多站点网络中创建一个新的空子站点,作为您传入的单个站点的目标。这为WP Migrate提供了指定的数据导入位置。
执行自动化拉取迁移
这正是WP Migrate真正发挥优势的地方,将以前需要数小时耐心手动劳动的任务自动化。从您的多站点网络管理仪表板:
- 导航到WP Migrate插件界面。
- 选择“拉取”选项。这告诉插件您要将数据从远程站点拉取到您当前的多站点网络。
- 然后系统将提示您连接到您的远程源站点(您的原始单个WordPress安装)。连接后,WP Migrate将智能检测您的多站点设置。
- 插件将为您提供精确的迁移选项。您将能够选择要拉取的特定单个站点,选择多站点网络上新创建的子站点作为此次迁移的精确目标,并选择您希望迁移的组件:数据库、媒体文件、主题和插件。
- 做出选择后,您将启动迁移。WP Migrate随后接管,执行一系列自动化、复杂的任务。它智能地处理URL和文件路径的查找和替换,安全地管理所有序列化数据而不会损坏。该插件还会正确调整您单个站点的所有数据库表前缀,以匹配目标子站点的唯一前缀(例如,
wp_变为wp_2_)。它还会将您单个站点的用户数据合并到多站点的全局wp_users和wp_usermeta表中,正确处理用户ID分配和引用。媒体文件直接传输到正确的子站点特定的wp-content/uploads/sites/[子站点ID]/目录,它甚至会传输您选择的主题和插件,使它们可以在您的新子站点上激活。 - 您可以直接在WP Migrate界面中监控迁移进度,它会在处理数据时提供清晰的反馈。
迁移后的测试仍然很重要
即使有WP Migrate提供的自动化,全面测试仍然是关键步骤。虽然发生根本性错误的可能性大大降低,但验证一切按预期工作始终是明智的。
- 清除缓存: 与往常一样,清除多站点上的所有缓存插件,以及服务器端和CDN缓存。
- 重新保存固定链接: 导航到新子站点的仪表板(设置 > 固定链接)并点击保存更改。这有助于确保固定链接结构在多站点环境中正确刷新。
- 全面测试: 系统地检查您新迁移的子站点的各个方面。访问所有页面和帖子,验证图片和媒体链接,测试表单,确保小部件和自定义设置正确,并确认所有插件都按预期运行。
方法比较
两种方法的对比很明显。第二种方法由WP Migrate驱动,将一个劳动密集型、技术上危险的过程转变为几次点击。可能需要数小时甚至数天手动调试和高度专业化知识的过程被压缩到几分钟内,大大降低了错误和数据损坏的风险。这种强大的自动化意味着更少的压力、更多的可靠性,最终是对您时间的高效利用。
总结
我们探讨了将单个WordPress网站迁移到多站点网络的两种不同路径。一方面,精细的手动方法需要深入的技术知识,并具有很高的数据损坏风险。另一方面,专用工具将这个复杂的过程转变为高效可靠的操作。
努力和风险的差异是惊人的。可能需要多天调试的噩梦变成了几次点击的问题,大大减少了您的时间和压力。
这种对比清楚地突出了一个选择:用 painstaking 的人工努力处理极其复杂的任务,或利用旨在安全处理其复杂性的自动化。对于大多数人来说,投资于提供这种效率、可靠性和安心的解决方案是无价的。




