WordPress 3.5 では、 SQL インジェクションなどの特定のセキュリティ リスクを軽減するためにいくつかの大きな変更が行われました。wpdb::prepare
プラグイン開発者が引数を分離する代わりに完全なクエリを送信していたため、このメソッドは安全に使用されていませんでした。これは、「準備された」ステートメントが準備されておらず、実際にはパラメーターをクエリに直接渡していることを意味し、これはセキュリティのノーノーです。3.5 の時点で、このメソッドは 3 つの引数を取るようになりました。
当面の問題に対処するには、php.ini ファイルを編集し、行を見つけてerror_reporting
次のように変更します...
error_reporting(E_ALL & ~(E_NOTICE|E_WARNING));
サーバーを再起動します。
これにより、すべてのマイナー スクリプト エラーが報告されなくなります。
または、エラーをログ ファイルに送信します。php.ini で、この行を見つけて (コメントを外して)、次のように変更します。
error_log "/path/to/php-error.log"
これにより、Web サイトにエラーが表示されなくなります。代わりに、あなただけが見ることができるログに書き込まれます。
このエラーが気になる場合は、不正なプラグインにダミーの値を使用させようとすることができます。wpdb::prepare
メソッドが 3 つの引数を取ることがわかります...
$wpdb->query(
$wpdb->prepare(
"
DELETE FROM $wpdb->postmeta
WHERE post_id = %d
AND meta_key = %s
",
13, 'stack overflow'
)
);
影響を受けるプラグインnull
がメソッドの 2 番目と 3 番目の引数として a を送信するようにすると、問題が完全に修正されます。