本サイトで配布している【Hima Art Utility】プラグインがPHP8.1でも問題なく動くかをチェックするために、PHPのバージョンを変えて、投稿編集画面を開いたら、大量のDeprecated(非推奨)メッセージが...(Deprecatedは正確にはエラーではないのでメッセージとしています)。
- Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Cookie/Jar.php on line 63
- Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Cookie/Jar.php on line 73
- Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Cookie/Jar.php on line 89
- Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Cookie/Jar.php on line 102
- Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Cookie/Jar.php on line 111
- Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40
- Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51
- Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68
- Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82
- Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /../wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91
結構豪華な(笑)ラインアップ..。
さらに1件警告メッセージが..
- Warning: Cannot modify header information – headers already sent by (output started at /home/uhohjzgj/public_html/testsite/wp-includes/Requests/Cookie/Jar.php:15) in /../wp-admin/admin-header.php on line 9
実際の投稿編集画面が以下の画像です。
あれ?プラグインのコードに問題があったかな?で、定石通り、すべてのプラグインを停止して確認するも状況変わらず...。
さらに定石通り、テーマをデフォルトのTwenty Twenty-Threeの親テーマにしたらメッセージはなくなりました。
プラグインのチェックをしてたはず..が原因は、子テーマにあったようです。
現状このサイトは、タイトルにもある通り、TT2(Twenty Twenty-Two)を使ってて、自作の子テーマを有効化しています。
あくまでも考察として、PHP8.0では問題なかった(と記憶)ので、PHP8.1で何等かの仕様が変わった模様です
デバッグを有効にした状態で検証スタート!!
子テーマに記述しているコードを一旦すべて退避させた後、1つ1つコードの復元と投稿編集画面の確認をしながら検証を繰り返します。
すると...以下の記述を追加した段階で冒頭のメッセージが表示されました。
/***** ブロックエディタ用にスタイルを追加 *****/
function tt2_editor_style_init(){
// ブロックエディタ用スタイル機能をテーマに追加
add_theme_support( 'editor-styles' );
// ブロックエディタ用CSSの読み込み
add_editor_style(trailingslashit( get_stylesheet_directory_uri() ) .'editor-style.css');
}
add_action( 'after_setup_theme', 'tt2_editor_style_init');
このコードは、子テーマからエディタスタイルを追加するコードで、クラシックテーマ時代から使っているものですから、問題となるようなことはないはず..ですが..。
以下のように、「enqueue_block_assets」を使って有効化する方法に変更したら解消されました。
/***** ブロックエディタ用にスタイルを追加 *****/
function tt2_editor_style_init(){
//スタイルシートの登録
wp_register_style( 'custom-editor-style', get_stylesheet_directory_uri() .'/editor-style.css', array(), filemtime(get_stylesheet_directory() .'/editor-style.css'), 'all' );
//スタイルシートの読み込み
wp_enqueue_style('custom-editor-style', '', array(), null, false);
}
add_action( 'enqueue_block_assets', 'tt2_editor_style_init');
検証に疲れてしまったので、果たして以前のコードでPHPのバージョンが古い状態ではどうだったかというところまでは調べていませんが、確かにエディタースタイルは効いていたので、ブロックテーマだとどうなのか?PHPのバージョンによる問題なのか?など謎のままですが、無事回避できました。
...結局【Hima Art Utility】プラグインでは以下のページの項目をいくつか対応しただけで大きな問題はありませんでした。
ただ上記リンク先ページでも触れていますが、使っているプラグインがPHP8.1に完全対応していない場合もありますから、それらが対応してからPHP8.1へのバージョンアップをした方が無難そうですね。
また、いろいろ調べる限り、バージョン7.4あたりからバージョン8.1にしても、ページ表示の高速化(処理の高速化)という部分ではそれほど効果がないようですから、無理にバージョンアップする必要も今のところないのかも知れません。
ちなみに以下で配布しているTT2の子テーマは、今回のメッセージが出ないようコードを差し替えていますので、安心してお使いいただいて大丈夫かと思います。
また、WordPress6.1でデフォルトテーマになったTT3(Twenty Twenty-Three)用の子テーマも配布していますのでよかったらどうぞ!
上記ページで配布している子テーマの使用については、自己責任でお願いします(トラブル等がありましても当方では対応しかねます)
補足 メッセージが出る状況って...
今回は、「wp-config.php」でデバッグモードを有効にしたことでメッセージやエラーを発見しました。
これは、いわば開発者などが確認を行うための機能で、通常にWordPressを使用する場合には無効になっている機能です。
WordPress公式のフォーラムや、ネットの検索結果などでもよくこうしたエラーやメッセージの対応方法が掲載されていますが、そもそも、通常使用でメッセージが出ない状況にしておくべきだと思います。
長くWordPressを使っている経験から、デバッグモードが最初から有効になるというのは遭遇したことがないので、恐らく自身や対応をお願いした方が有効にしたか、レンタルサーバーの自動インストール機能を使ってWordPressをインストールした場合に有効に設定されるようになっているかのいずれかですので、通常は無効にしておくことをおすすめします。
デバッグモードは、サイトのインストールフォルダの中にある「wp-config.php」の中にある以下の記述でtrue(有効)になっているものをfalse(無効)にするだけです。
define( 'WP_DEBUG', true );
「wp-config.php」は大切なファイルなので、編集に慣れていない場合には誰かにお願いするなどした方が無難でしょう
コメントを残す