php - WordPress 侧边栏小部件在更新 MySQL 数据库中的链接时被禁用

标签 php mysql wordpress

当我更改数据库中的 Twitter 链接并将所有以前的链接替换为 wp_options 表下的新链接时,我的 WordPress 侧边栏小部件消失了。除了链接之外,我没有更改任何内容,但小部件仍然从正面消失,我做错了什么以及如何从数据库中删除它。

最佳答案

我不确定,但我怀疑您的更新导致数据库中出现一些无效的 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 值相似。相关部分是“a string”之前的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 表中的新值。

关于php - WordPress 侧边栏小部件在更新 MySQL 数据库中的链接时被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9802811/

相关文章:

mysql - 人工异常 : There should be 10 default repository layouts

mysql - 如何登录 phpMyAdmin?

php - 4D 为 PHP 连接 MySQL 设置用户名和密码

php - 使用 PHP 在 mysql 中插入/输出日期和时间?

python - 在 Django 查询集中加入以过滤它

php - 在 Woocommerce 的 WP_Query 循环中显示产品价格

javascript - 如何发送带有链接的 $POST ?用java或任何合适的东西?

php - WordPress 内容未在 .load jQuery 函数上检索

php - 将一个长页面拆分为多个页面

php - 在您选择的列上添加索引是否可以加快查询速度?