2017-03-28 46 views
1

简要概述:我们正试图将一些长期(7年以上)WordPress多地点安装从子域转换为子目录。更改wp-config.php.htaccess都很好。但是其中一些安装有超过1000个站点,并且在整个数据库中散布可以有大量的abc.multisite.com实例。大型数据库替换方法

我试图找到又不影响123abc.multisite.com导致123multisite.com/abcabc.multisite.com转化为自动化到multisite.com/abc,当然最好的办法。

所有的find /替换插件我见过能做到这一点只能做一次一个单一的搜索,和我有成千上万的记录来代替。

最好的方法是什么?是否有一条SQL命令可以通过PHP循环遍历数百个数据库表?

我可以使用get_sites()函数得到一个网站列表,并通过它循环。

还是有更好的工具导出数据库,查找/替换有(其中一些数据块的大小会崩溃原子/崇高/支架。

回答

1

如果您有(SSH)访问WP CLI,你可以在你的站点根目录运行以下命令:

wp search-replace abc.multisite.com multisite.com/abc 

对于Multisites,如果你希望所有表中进行搜索,您将需要--network标志

http://wp-cli.org/commands/search-replace/

默认情况下,该命令使用注册到$ wpdb对象的表。 在多站点上,这只是当前站点的表格,除非 - 网络已指定。搜索/替换智能地处理PHP序列化数据,并且不会更改主键值。

wp search-replace abc.multisite.com multisite.com/abc --network 
+0

太谢谢你了!我不知道WP-CLI的存在。我已经得到了它的总体思路和它似乎是大部分工作(有几个问题,更换网站的网址仍然时) 虽然我还是要找出细微差别我的特殊情况,我相信这是去工作非常适合我需要的东西 - 谢谢! 注:'WP --info'没有输出对我来说,原来对了Suhosin有'WP-cli'破例需要,现在,它的工作原理就像一个梦。再次感谢! – Xhynk