画面の上部やエラーログに出現する「PHP Deprecated: preg_match(): Passing null to parameter ..」のメッセージ。
私の場合はエラーログに時折以下のようなものが吐き出されるようになっていました。
PHP Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /サイトのディレクトリ/wp-content/plugins/webp-express/webp-express.php on line 45
このエラーログが出るサイトは「WebP Express」という、jpegなどの画像をより軽量なwebp形式で出力してくれるプラグインで、値として文字列が指定されるはずのところが空になってますよというPHP8.0以降で出てくる半ば定番的な非推奨事項として時折出ていました。
結論から言えば、予期しない空の文字列がセットされてしまっていること、先ほどから書いている時折というのがミソで、そのサイトの場合は、未変換の画像がページに表示される時にだけエラーログに書き出されていたのです。
具体的には、以下のページでも紹介している通り、WebP Expressはメディアやテーマ・プラグインにある画像をwebp形式の画像へ変換して別のディレクトリに保存し、画像が呼び出されたときにはその画像に置き換えて出力するという機能を持つプラグインなので、一部の画像が未変換で、置き換える際に訪ね当たらないので空(mull)が渡されたということでした。そのために時折エラーが吐き出されていたのですね。
まあプラグインなのでプラグイン側で対応しておいてくれよと言いたいところではありますが、今回の場合はテーマ側で代替画像として組み込んでいた画像を変換し忘れていたのが原因だったので半ばこちらのミスだったのかもとも思いつつ、画像を再生成することで無事解決しました。
今回はプラグインで出たエラー(非推奨事項)でしたが、自身でテーマやプラグインを作った際にこのメッセージが出た時は、その行にあるプログラムでnull値が渡されてしまっていないかを確認し、渡される可能性がある場合には初期値(nullが返されたときの代替の値)を先に指定しておくことで解消できますので、確認してみてください。
簡単に書けば、nullと空(”)は別物なので、処理するプログラムの前に「$valuable = ”;」など変数にあらかじめ空白の文字列を指定するようにしておくか、関数名の後ろの()に「$valuable = ”;」と指定しておけば、この非推奨事項は出なくなります(代替が空白の文字列でいいかどうかはプログラムの内容によりますが..)。
また、これらのメッセージが何も設定していないのに画面上部に表示されるという方は、デバッグモードがONになっていて、一般の訪問者にもメッセージの内容や不具合の起きている箇所、ひいてはサーバー内の階層構造も晒してしまう可能性がありますから、デバッグモードをOFFにしておくことをお勧めします。


