进行此数据修改的一种可能方法是在终端上使用WP-CLI。
首先,您应该确保有备份和可靠的还原策略,以防万一出现问题。您还应该使用实时数据库的副本在本地或测试系统上测试此过程。
基本步骤是遍历网络的每个站点,并使用WP-CLI的search-replace
命令替换每个站点的URL 。
这是一个时髦的单线:
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
命令,它为您提供了网络中所有站点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字符串替换操作替换http:
用https:
。(因此,解析变量后,该命令将类似于wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
)。
search-replace
有许多可能的选项,在文档中进行了介绍。在示例中,我使用了这些:
--dry-run --precise --network --verbose
--dry-run
和--verbose
用于测试的命令显然很有帮助。
--network
将搜索和替换操作也应用于网络表格。
--precise
告诉WP-CLI使用PHP而不是SQL来搜索和替换值。这样可以确保序列化的值不会损坏。
最后,用
; done
让我再次强调一下:在开始将其用于生产之前,请对此进行深入测试。您应该了解它的工作方式以及WP-CLI的作用。之前,我曾使用WP-CLI执行这种搜索和替换操作,以将多站点迁移到其他域名,但没有从切换http
到https
。
可能存在一些极端情况:WP-CLI仍然读取,wp-config.php
并尝试使用中的常量在数据库中找到匹配的“网络” wp-config.php
。如果要操作一个站点(数据库)而不是另一个站点(中的常量wp-config.php
),则可能会遇到麻烦。但是,对于你的情况,我认为这不会是一个问题,因为WP通常依赖于DOMAIN_CURRENT_SITE
和PATH_CURRENT_SITE
他们无论如何都不会改变。但是,再次进行彻底测试。
使用更多的bash魔术,您还可以将此循环分成5个或10个站点的块,并逐步进行。