进行此数据修改的一种可能方法是使用WP-CLI 在终端上。
首先,您应该确保有备份和可靠的恢复策略,以防出现任何问题。您还应该在本地或使用实时数据库副本的测试系统上测试此过程。
基本步骤是迭代网络的每个站点,并使用WP-CLI替换每个站点的URLsearch-replace
command.
这里有一句俏皮话:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
让我们检查一下:
for SITE in $(wp site list --field=url);
其中一个为内部命令输出的每一行启动一个循环
$()
并在变量中写入每一行
$SITE
.
$(wp site list --field=url)
这就是WP-CLI
site list
command 这将为您提供网络中所有站点URL的列表。单独运行此命令,您可能会看到如下内容:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
现在
...); do
将只启动内环部分。
内部循环命令发挥了所有的魔力(我使用\\
可读性):
wp search-replace "$SITE" "${SITE/http:/https:}" \\
--dry-run --precise --network --verbose
我们告诉WP-CLI搜索
$SITE
(例如。
https://your-site.tld/
) 并将其替换为稍加修改的版本:
${SITE/http:/https:}
. 这是一个bash string replaces操作
http:
具有
https:
. (因此,解析变量时,命令如下所示
wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
).
search-replace
中介绍了许多可能的选项documentation. 在示例中,我使用了以下内容:
--dry-run --precise --network --verbose
--dry-run
和
--verbose
显然有助于测试命令。
--network
将搜索和替换操作也应用于网络选项卡。
--precise
告诉WP-CLI使用PHP而不是SQL来搜索和替换值。这样可以确保序列化的值不会损坏。
最后,使用
; done
让我再次强调一点:在开始将其用于生产之前,请对此进行深入测试。您应该了解它的工作原理以及WP-CLI的功能。之前我使用WP-CLI执行这种searach和replace操作,将多站点迁移到其他域名,但不切换
http
到
https
.
可能存在一些边缘情况:WP-CLI仍然读取wp-config.php
并尝试使用中的常量在数据库中查找匹配的«网络»wp-config.php
. 如果您操作的是一个站点(数据库),而不是另一个站点(中的常量wp-config.php
) 你可能会遇到麻烦。但对于您的情况,我认为这不会成为WP通常依赖的问题DOMAIN_CURRENT_SITE
和PATH_CURRENT_SITE
他们无论如何都不会改变。不过,还是要彻底测试一下。
使用更多的bash魔法,您还可以将此循环拆分为5个或10个站点的块,并逐步进行。