我正在管理数百个网站,需要更改部分序列化数据。这是一个 wordpress 子主题,在主题的“选项”设置中。
使用这个脚本
UPDATE wp_e4e5_options
SET option_value = REPLACE(option_value, 'Copyright | by <a href="https://company.com"', ' ')
a:1:{s:3:"copyright";s:17:"Copyright | by <a href="https://company.com"";}
我敢肯定,它只会找到序列化数据的那部分并替换。但事实并非如此。它将设置重置为主题的标准设置。即使我使用表中的Adminer.php 手动编辑它,它也会重置。
我知道,这可能是在错误的论坛中,因为它与 Wordpress 相关,但我相信这里的问题是 SQL。
所以我的问题是:
如果我使用 Adminer.php(phpMyAdmin 的简单版本)手动编辑它,它会将所有设置重置为标准。如何只编辑部分序列化数据和上面显示的部分?
是什么让它“重置”为标准设置?
更新: 感谢@Kaperto,我现在得到了这个工作代码,这给了我一个新问题。
UPDATE wp_e4e51a4870_options
SET option_value = REPLACE(option_value, 's:173:"© Copyright - Company name [nolink] | by <a href="https://company-name.com" target="_blank" rel="nofollow">Company Name</a>";', 's:40:"© Copyright - Company name [nolink]";')
问题是,它将被用作 ManageWP 的代码片段,它会遍历数百个网站,这些网站都有不同的公司名称。所以字符串的第一部分是唯一的,但在所有站点上其余部分都是相同的,在 pipe 之后|
。
所以我以某种方式需要这样做:
- 查找包含此字符串的整个系列
| by <a href="https://company-name.com" target="_blank" rel="nofollow">Company Name</a>"
- 获取整个系列
s:173:"© Copyright - Company name [nolink] | by <a href="https://company- name.com" target="_blank" rel="nofollow">Company Name</a>
- 替换为具有更新字符数的新系列,因为公司名称不同
这甚至可以通过纯 SQL 命令实现吗?