是否可以仅使用wp-cli将一个多站点实例迁移到单个站点?

时间:2016-03-08 作者:prosti

今天我花了很长时间才从https://example.comhttps://sub.example2.com 从WordPress MultiSite安装到普通WordPress安装(阅读:singlesite)。

因为我最近开始使用wp-cli,所以我认为只有使用wp-cli才能做到这一点。

我使用wp cli导出数据库。因为我的实例前缀为:wp_9_

我使用的代码如下:

wp db export --tables="wp_users, wp_usermeta, wp_9_posts, wp_9_comments, wp_9_links, wp_9_options, wp_9_postmeta, wp_9_terms, wp_9_term_taxonomy, wp_9_term_relationships, wp_9_termmeta, wp_9_commentmeta" 
后来我发现我应该用这样的东西:

wp db export --tables=wp_users,wp_usermeta, $(wp db tables --all-tables-with-prefix \'wp_9\' --format=csv --allow-root) --allow-root
对于不使用#

wp db export --tables=wp_users,wp_usermeta, $(wp db tables --all-tables-with-prefix \'wp_9\' --format=csv) 
然后我设置:

define(\'WP_HOME\',\'https://sub.example2.com\');
define(\'WP_SITEURL\',\'https://sub.example2.com\'); 
但我面临的问题是:帖子、guid和meta没有更新。。。通常我从不做下一步,因为它只在许多情况下起作用。

但我不得不做以下事情:

UPDATE wp_posts SET post_content = replace(post_content, \'https://example.com\', \'https://sub.example2.com\');
UPDATE wp_posts SET guid = replace(guid, \'https://example.com\', \'https://sub.example2.com\');
UPDATE wp_postmeta SET meta_value = replace(meta_value,\'https://example.com\', \'https://sub.example2.com\');
此外,我还需要在post内容甚至post\\u meta中更新上传路径,因为在mulitsite上,上传路径是/uploads/sites/9/ 仅在单个站点上/uploads/.

这也应该反映在帖子和帖子元中,如下所示:

UPDATE wp_posts SET post_content = replace(post_content, \'/uploads/sites/9/\', \'/uploads/\');
UPDATE wp_postmeta SET meta_value = replace(meta_value,\'/uploads/sites/9/\', \'/uploads/\');
在这一步之后,我使用cp 命令遗憾的是,我甚至没有考虑过wp cli。

我想问的是,是否可以完全使用wp cli自动化此过程?下次它会是一个很好的帮手。

3 个回复
最合适的回答,由SO网友:Daniel Bachhuber 整理而成

尝试使用10up/MU-Migration 命令:https://github.com/10up/MU-Migration

SO网友:AntonChanning

如果您的多站点安装只有少量子站点,您可能会发现仅使用管理区域中的导出和导入工具更容易。

对于多站点安装中的每个站点,您可以下载包含博客帖子、页面、用户、评论等的导出文件。然后您可以将所有这些内容导入到同一个站点。可能比摆弄数据库更容易。。。

SO网友:Anthony

而不是做那些MySQLUPDATE 可以使用WP-CLI的命令wp search-replace 命令

示例:wp search-replace \'https://example.com\' \'https://sub.example2.com\'

这是一个序列化安全的搜索和替换,所以你的元不会被损坏。

更多信息,请访问http://wp-cli.org/commands/search-replace/

相关推荐

如何终止WP-CLI执行?

我正在Windows 10和XAMPP上试用WP-CLI。我可能不理解它是如何工作的,因为我认为从XAMPP控制面板停止Apache会停止命令行上的WP-CLI脚本执行。我在一个插件类中有一个长时间运行的脚本,其中有一个进度条。我开始运行它,然后决定进行一些修改。我从控制面板上停止了Apache和MySQL,进度条一直在运行。脚本似乎没有停止运行。WP-CLI是否;“运行”;是自己的服务器吗?是否可以终止WP-CLI中所有正在运行的进程?