当我更改数据库中的twitter链接时,我的wordpress侧边栏小部件消失了,用wp_options
表下的新链接替换了所有以前的链接。除了链接,我没有更改任何其他内容,但小部件仍然从正面消失了,我做错了什么,以及我如何无法从数据库中删除它。
我不确定,但我怀疑您的更新在数据库中导致了一些无效的PHP。为了将复杂结构作为字符串存储在数据库中,在存储之前对值进行序列化。
例如,以下
<?php
$example = array("a string", "another string");
echo serialize($example);
?>
输出
a:2:{i:0;s:8:"a string";i:1;s:14:"another string";}
这看起来与许多wp_options
值相似。相关部分是"字符串"前面的8。这就是绳子的长度。如果在不更改该值的情况下将字符串更改为不同长度的字符串,PHP(和WordPress)将无法取消该值的序列化。
例如,
<?php
print_r( unserialize('a:2:{i:0;s:8:"a different string";i:1;s:14:"another string";}') );
?>
中的结果
Notice: unserialize(): Error at offset 22 of 61 bytes in D:'tmp'so.php on line 11
我怀疑WordPress在你更新后出现了这个错误。
为了解决您的问题,我首先要反转您运行的更新,这样序列化的PHP是有效的。然后更新管理屏幕中的值。
如果无法通过管理屏幕进行更新,请编写一个小型PHP程序,获取(现在正确的)序列化值,取消序列化,更改适当的值,然后再次序列化。将序列化的结果用作wp_options
表中的新值。