WordPress3.5にしたらprepareでエラーが出た場合の対処
WordPress3.5より 関数 prepare の第2引数が必須になりました。
これによって一部のプラグインで以下のようなエラーが出る場合がありました。
「Warning: Missing argument 2 for wpdb::prepare(), called in ~/wp-content/plugins/XXXXX/XXXXX.php on line 1712 and defined in ~/wp-includes/wp-db.php on line 990」
~3.4.2 wp-db.php
function prepare( $query = null ) { // ( $query, *$args )
(第2引数は関数内部で受取るようになってます)
3.5 wp-db.php
function prepare( $query, $args ) {
(第2引数は必須になってます)
これにより、prepare関数で第1引数だけで使っている場合にエラーが発生します。
不動産プラグインシリーズは今回のバージョンアップで対応しましたが、他社のプラグインはまだ対応できていないようです。
【緊急対策例】
WordPressの コアファイル を触る事になりますが、他社のプラグインが対応するまで 一時的に prepare関数 を以前のコードに戻してみるのはいかがでしょうか。
wp-includes/wp-db.php
prepare関数 (WordPress3.4.2)
function prepare( $query = null ) { // ( $query, *$args ) if ( is_null( $query ) ) return; $args = func_get_args(); array_shift( $args ); // If args were passed as an array (as in vsprintf), move them up if ( isset( $args[0] ) && is_array($args[0]) ) $args = $args[0]; $query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it $query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting $query = preg_replace( '|(?<!%)%s|', "'%s'", $query ); // quote the strings, avoiding escaped strings like %%s array_walk( $args, array( &$this, 'escape_by_ref' ) ); return @vsprintf( $query, $args ); }
こちらのコードと差し替えてみてください。
*他社のプラグインが対応すれば元に戻すのを忘れずに。
【追記】
wp-config.php に以下のコードを追記する方法もあるようです。
@ini_set('display_errors', 0);
*PHPでのエラーの表示をオフにする