升級到 WordPress 3.6 之后,發(fā)現(xiàn)在 debug log 中有很多以下的錯誤信息:
Notice: wpdb::escape is deprecated since version 3.6! Use wpdb::prepare() or esc_sql() instead.
這個錯誤信息的意思是 WordPress 3.6 將 $wpdp 類的 escape 方法設(shè)置過將舍棄,建議使用 preprae 方法或者 esc_sql 方法取代。 deprecated 的意思是這個方法雖然這個版本可以使用,但是在以后將會不再更新,直至刪除,所以我們最后將使用這個方法的插件做下修改。讓自己博客以后升級不會出錯。
經(jīng)過一輪的排查,插件和主題都沒有用到這個函數(shù)進(jìn)行過濾。最后發(fā)現(xiàn)是 Multisites 的 sunrise.php 文件引起的問題。
但是由于 sunrise.php 文件比 esc_sql() 文件被定義之前被引用,所以我們無法使用 esc_sql() 的函數(shù),而 $wpdb->prepare 在 sunrise.php 這行又無法使用。最后發(fā)現(xiàn)可以通過 $wpdb->_escape 方法來替換。
所以最終的修改方式是,將 wp-content/sunrise.php 文件中下面一行:
$dm_domain = $wpdb->escape( $_SERVER[ 'HTTP_HOST' ] );
修改成:
$dm_domain = $wpdb->_escape( $_SERVER[ 'HTTP_HOST' ] );
更多信息請查看IT技術(shù)專欄
2025國考·省考課程試聽報名