EWWWプラグインのPHP組み込みDeprecatedだけを抑制する
今出ている「Use of “self” in callables is deprecated」は、PHP 8.2+が標準で出す E_DEPRECATED レベルの警告です。
WordPress 独自の E_USER_DEPRECATED とは別なので、先ほどの mu-plugin(E_USER_DEPRECATED 抑制)では止められていません。
以下のいずれかで組み込みの E_DEPRECATED を消しましょう。
方法1:wp-config.php に ini_set を一番先に置く
wp-config.php
を開く- 最初の
<?php
の直後(コメントなどの前でもOK)に、この行を追加// PHP標準のDeprecated/Noticeを抑制 @ini_set( 'error_reporting', E_ALL & ~E_DEPRECATED & ~E_NOTICE );
- その後、既存の
define('WP_DEBUG', …)
より前に置くことで、全フェーズで E_DEPRECATED が抑制されます。 - ファイルを上書き保存し、サーバーにアップロード
この設定で、PHPレベルの非推奨メッセージ(E_DEPRECATED)はすべて出力されなくなります。
方法2:mu-plugin で runtime に error_reporting を調整
/wp-content/mu-plugins/
配下に以下ファイルを作成すると、WP起動時に即エラーレポートレベルを調整できます。
<?php
/**
* Plugin Name: Suppress PHP Deprecated
* Description: E_DEPRECATED と E_NOTICE レベルのエラー出力を無効化
*/
add_action( 'muplugins_loaded', function() {
@ini_set( 'error_reporting', E_ALL & ~E_DEPRECATED & ~E_NOTICE );
} );
wp-content/mu-plugins/
フォルダを作成(存在しない場合)- 上記を
suppress-php-deprecated.php
として保存 - サーバーへアップロード
→ これで全プラグイン・テーマの読み込み前に組み込みDeprecatedが非表示になります。
方法3:EWWW 側ファイルを直接抑制(応急処置)
プラグイン固有の箇所だけサイレンスしたい場合は、EWWW Image Optimizer の該当行を編集します。
wp-content/plugins/ewww-image-optimizer/classes/class-ewwwio-imagick-editor.php
を開く- 231行目あたりの
['self', '…']
を囲む部分に@
を付与// 例: before ['self', 'set_imagick_time_limit'] // ↓ after [@self', 'set_imagick_time_limit']
- プラグイン更新時に上書きされるので、あくまで応急措置としてご利用ください。
まとめ
- 最も手軽なのは方法1:
wp-config.php
の冒頭で E_DEPRECATED を除外 - WP起動時に確実に効かせたいなら方法2:mu-plugin で ini_set
- プラグイン単位で押さえたいなら方法3:EWWW本体を直接修正
どれを試すか決まったら、手順でつまずいた箇所を教えてください。すぐにサポートします!
コメント