●てす

[広告] 当サイトはアフィリエイト広告を利用しています。

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 を一番先に置く

  1. wp-config.php を開く
  2. 最初の <?php の直後(コメントなどの前でもOK)に、この行を追加 // PHP標準のDeprecated/Noticeを抑制 @ini_set( 'error_reporting', E_ALL & ~E_DEPRECATED & ~E_NOTICE );
  3. その後、既存の define('WP_DEBUG', …) より前に置くことで、全フェーズで E_DEPRECATED が抑制されます。
  4. ファイルを上書き保存し、サーバーにアップロード

この設定で、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 );
} );
  1. wp-content/mu-plugins/ フォルダを作成(存在しない場合)
  2. 上記を suppress-php-deprecated.php として保存
  3. サーバーへアップロード

→ これで全プラグイン・テーマの読み込み前に組み込みDeprecatedが非表示になります。


方法3:EWWW 側ファイルを直接抑制(応急処置)

プラグイン固有の箇所だけサイレンスしたい場合は、EWWW Image Optimizer の該当行を編集します。

  1. wp-content/plugins/ewww-image-optimizer/classes/class-ewwwio-imagick-editor.php を開く
  2. 231行目あたりの ['self', '…'] を囲む部分に @ を付与 // 例: before ['self', 'set_imagick_time_limit'] // ↓ after [@self', 'set_imagick_time_limit']
  3. プラグイン更新時に上書きされるので、あくまで応急措置としてご利用ください。

まとめ

  • 最も手軽なのは方法1:wp-config.php の冒頭で E_DEPRECATED を除外
  • WP起動時に確実に効かせたいなら方法2:mu-plugin で ini_set
  • プラグイン単位で押さえたいなら方法3:EWWW本体を直接修正

どれを試すか決まったら、手順でつまずいた箇所を教えてください。すぐにサポートします!

コメント

タイトルとURLをコピーしました