WordPress 3.5 与 wpdb::prepare

WordPress 3.5 与 wpdb::prepare,第1张

WordPress3.5与wpdb::prepare()报错解决办法

WordPress3.5和wpdb::prepare()报错一直是困扰网友的难题。所以本文收集了一些解决方法供大家参考,一定要掌握的人可以参考一下。

WordPress3.5公布了,这个版本包含了很多升级。一个名为Twenty的新主题打开了,这是自适应网站的默认设置。Admin页面已经改版,对于移动设备更加简单和完善;媒体的角色也有了很大的提升,现在没有理由再去应用其他的图片链接服务了。

仅此而已。现在是“但是”的时候了。但是...WordPress坚持一贯的工作风格,并悄然改变了一些内部方式。现在wpdb::prepare()必须填充第二个主参数,否则会给出如下错误。

警告:缺少wpdb::prepare()的参数2,该参数在xxx.php的第75行调用,并在/www/wp-includes/wp-db.php的第990行定义

wpdb::prepare()的第二个主要参数

从技术上来说,WordPress那样改变prepare没有错,因为这是一种组装SQL语句的方式。一般来说,必须有一个字符串数组,第一个主参数是自变量,第二个主参数是自变量。它的设计是为了更好地防范SQL的引入带来的安全风险。但是WordPress从2.2或者更早的版本就允许忽略第二个参数的写入,现在又突然把第二个主参数变成可选的,肯定会造成很多主题和软件无法正常工作。

我所有发布的WordPress主题和WP-RecentComments,一个新的评测软件,都是被q毙的。感谢neoner的提示。我一个半月前升级了WP-RecentComments来解决这个问题,但是一直没时间换主题,因为主题审批太麻烦了。

解决方案

在升级主题之前,我想在这里说一下解决方案,让客户先处理一下。我坚信还有其他主题或者软件可能会有类似的问题,期待对大家有所帮助。

大家必须先精准定位出現难题的文档和编码.PHP的编码报错很精确的,开启报错提示中的文档(前一个文档,并不是wp-db.php),寻找编码$wpdb->prepare.为该方式加上一个空串做为第二个主要参数,例如:$wpdb->prepare('xxx');改成$wpdb->prepare('xxx','');就可以.汇总

WordPress已经不是第一次悄悄改变激活方式了。在WordPress2.7的情况下,还规定comments_template必须用第二种方法键入。不过当时为了更好的拓展它的功能,我这次是真的迷茫了。除了安全考虑,WordPress也可能有替换一些不主动升级的主题的意图。我的主题本来就是向后兼容的,真的很不道德。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/772581.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-03
下一篇2022-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存