『デフォルトで動的なプロパティの追加が非推奨』を解決する
| 2024/06/18当サイトでも使用しているWPのプラグインに不具合続出
PHP8以降になり、新機能が増えたのはいいんだが、不具合も非常に増えている。
まずデフォルトのエラーレポートレベルが変更されて、より多くのエラーや警告が表示されるようになったそうだ。
私はいつもdefine( 'WP_DEBUG', true )に設定しているので大量のエラーに脳みそを突っつきまくられている。
特に、custom field suite、All-in-One WP Migration、MW WP Formにエラーが大量に吐き出されている。
特に不良動作が起きているわけではないが、やはり対処する必要がありそうだ。
それではひとつ目Custom Field Suite。
管理画面で次の様なエラーが”Deprecated: Creation of dynamic property Custom_Field_Suite::$group_ids is deprecated in ~”
CatGPTで調べるとエラーの内容は「PHP 8.2では、デフォルトで動的なプロパティCustom_Field_Suiteの追加が非推奨(Deprecated)になっています。」ということらしい。
さらに調べると、PHP 8.2で新たに導入された属性(アノテーション)で「#[AllowDynamicProperties]というものがあり、クラスに対して動的なプロパティの追加を許可するものだそうだ。「この属性を使用することで、特定のクラスに対してその制約を緩和することができます。」とある。
その修正方法は?
CatGPTに聞いてみた。
つまり、8.2未満では下記で問題なかったコードが8.2以降ではエラーなるため
<?php
class MyClass {
public $existingProperty;
}
下記のように修正する必要があるそうだ。
<?php
#[AllowDynamicProperties]
class MyClass {
public $existingProperty;
}
1行追加するだけだ
では対象のコードはどこにあるか
修正方法はわかったが、肝心のcustom field suiteの動的プロパティCustom_Field_Suiteはどこにあるんだ?
調べるとあった。cfs.phpの最上段に記述されている。なので次の様に修正することでエラーを無くせた。
<?php
#[AllowDynamicProperties]
class Custom_Field_Suite
{
やることは簡単だがこの解決方法を見つけるのには、ほんとかなり苦労した。
残りのプラグインエラーの解消方法は次回で解説する。
おまけ
フィールドグループの編集画面でもエラーがでた。
修正方法は上と同じだ。
- AllowDynamicProperties
- CatGPT
- Custom_Field_Suits
- Deprecated: Creation of dynamic property
- PHP8.2以降
- フィールドグループの編集画面
- 不具合対応
- WEBの回復屋さん
『wordpressPHP8の不具合をCatGPTが怪傑』関連のお薦め
このページで紹介しているプログラムやビジュアルなどご依頼いただければ実装を賜ります。
お問い合わせはこちら