最近在测试某款主题的时候发现除了问题,我在本地测试好之后上传到空间,页脚处出现这样的报错信息: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版的wordpress为了防止SQL注入引发站点的安全问题,修改了内部方法: wpdb::prepare() ,本来这个方法只需要填写一个参数即可,但是升级之后必须填入第二个参数,否则就会报错。
在出错主题的footer.php文件中会有类似如下的代码:
$post_datetimes = $wpdb->get_row($wpdb->prepare(“SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > 1970”));
在3.5版本之前,这样的写法是没有任何问题的,但是在3.5,上面的写法就是错的,因为少了一个参数正确的写法应当是:
prepare(“SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > 1970”,””));
在下面的代码中添加了一个空的参数即可解决这个问题。
升级3.5之后主题出现问题的童鞋们,赶快去修改过来吧!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/250787.html