WordPress 3.5 与 wpdb::prepare() 报错

        WordPress 3.5 正式发布, 这个版本包括大量更新。 启用了最新的响应式布局默认主题 Twenty Twelve; 改版了 Admin 界面, 更加简洁而且针对移动设备进行了优化; Media 功能也得到极大的提高, 现在更加没有理由使用其他图床服务了。但是WordPress 秉承一贯的作风, 也偷偷改了一些内部方法, 现在wpdb::prepare() 必须填入第二个参数, 否则报错如下。

Warning: Missing argument 2 for wpdb::prepare(), called in xxx.php on line 75 and defined in /www/wp-includes/wp-db.php on line 990

WordPress 3.5 与 wpdb::prepare() 报错

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

        从技术上 WordPress 这样修改 prepare 并没有错, 因为这是用来组装 SQL 语句的方法, 按常理来说必须有带变量的字符串作为第一个参数和第二个作为变量的参数。 但是 WordPress 从 2.2 或者更早版本允许了忽略第二个参数的写法, 现在突然令第二个参数成为必填, 必然导致很多主题和插件不能正常使用。

        我发布的所有 WordPress 主题和最新评论插件 WP-RecentComments 都中枪了。 感谢 neoner 提醒, 半个月前我更新 WP-RecentComments 解决了这个问题, 但还没有时间改主题, 因为主题审核太麻烦了。

解决办法

        在更新主题之前, 我先在这里说说解决办法, 让用户们自己可以先解决一下, 相信还有其他主题或者插件可能也会有类似问题, 希望对大家有帮助。

        我们需要先定位出现问题的文件和代码。 PHP 的代码报错很精准的, 打开报错提醒中的文件 (前一个文件, 不是 wp-db.php), 找到代码

$wpdb->prepare

        为该方法添加一个空串作为第二个参数, 比如:

$wpdb->prepare(‘xxx’); 改为 $wpdb->prepare(‘xxx’, ‘’);

即可。

总结

        WordPress 也不是第一次偷偷修改方法调用方式了, WordPress 2.7 的时候也要求 comments_template 必须输入第二个方法, 但是当时是为了扩展功能, 这次我真的不解。 我猜测在有意淘汰一些不积极更新的主题很插件呢? 但我的主题明明向后兼容做得很好的, 实在太没节操了.

来源:neoease.com

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

热门教程

  • Z-Blog教程
    Z-Blog教程
    ZBlog教程分享ZBlog安装教程、ZBlog建站教程和ZBlog使用教程等相关教程,包括如何创建...
  • CSS教程
    CSS教程
    CSS教程提供了关于如何使用CSS来设计和美化网页的基础知识和技巧,包括选择器、样式规则、盒模型、布...
  • WordPress教程
    WordPress教程
    WordPress教程提供了关于WordPress的基础知识和技巧,包括安装、设置、发布内容、选择主...
  • 宝塔面板教程
    宝塔面板教程
    宝塔面板教程是一个致力于向用户传授宝塔面板的使用技巧和知识的学习资源,旨在帮助用户快速上手和充分利用...
  • PHP教程
    PHP教程
    PHP教程提供了关于PHP语法、变量、函数、流程控制等概念的详细指导,同时介绍了常见的Web开发技术...

3个月免费VPS

亚马逊云科技