今天我花了很长时间才从https://example.com 到https://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自动化此过程?下次它会是一个很好的帮手。