<- 所有文章
WordPress 迁移
为什么使用search-replace serialisation-safe
如何更改WordPress站点的URL而不破坏序列化数据。
问题
WordPress以PHP序列化数据的形式存储了许多选项。此格式编码了每个字符串的长度。如果您使用简单的SQL查找/替换将一个URL替换为另一个长度不同的URL,声明的长度将不再匹配,WordPress将无法读取数据。
一个具体示例
一个序列化的siteurl选项。s:25表示一个25个字符的字符串。
a:1:{s:7:"siteurl";s:25:"https://ancien-domaine.com";}
天真的替换(长度错误,数据损坏):
a:1:{s:7:"siteurl";s:25:"https://nouveau-domaine.com";}
序列化安全(重新计算长度):
a:1:{s:7:"siteurl";s:26:"https://nouveau-domaine.com";}
工具的工作原理
- 如果值是序列化的,它反序列化该值。
- 递归遍历嵌套的数组、对象和字符串。
- 将旧字符串替换为新字符串。
- 重新序列化:PHP会自动重新计算长度。
结果:可以在不破坏任何小部件、菜单或Elementor设置的情况下更改为不同长度的域名。