Blog プログラミング

AFFINGERタグ管理マネージャー4(ver4.3.1~)アップデート後の問題とは?

こんにちは、みなさん。今回は、AFFINGERタグ管理マネージャー4のアップデート後に発生する問題についてお話しします。AFFINGERタグ管理マネージャー4(以下、AFFINGER4)は、ウェブサイト上のタグ管理を簡単に行うための便利なツールです。しかし、バージョン4.3.1以降のアップデートによって、静的でないメソッドを静的に呼んでしまうというFatal Errorが発生することがあります。

リンクをクリックしたら、発生するエラー

Fatal error: Uncaught Error: Non-static method St\Plugin\AffiliateManager\Tracker\TagType\TagTypeSlug::all() cannot be called statically in *****/public_html/prosen.net/wp-content/plugins/st-affiliate-manager/Controller/ClickController.php:56 Stack trace: #0 [internal function]:

<< 中略 >>

wp-content/plugins/st-affiliate-manager/Controller/ClickController.php on line 56

このサイトで重大なエラーが発生しました。

WordPress のトラブルシューティングについてはこちらをご覧ください。

例えば、AFFINGER4の新しいバージョンでは、特定の関数が静的メソッドに変更されたため、それ以前のバージョンで利用していたカスタムコードが正常に動作しなくなる場合があります。このようなエラーが発生すると、ウェブサイトの表示が崩れたり、機能が正常に動作しなくなったりする可能性があります。

WordPressバージョン6.2.2
PHPバージョン7.3 - 7.4
対象ブラウザChrome 111 / safari16.5
その他 必要な環境などWordPressが使用できる環境及び知識
ZIPファイルのダウンロード及び解凍
PDFファイルの閲覧(PDFマニュアル付属の場合)
※動作確認の対象は日本のみとなります
※WordPress.org(独立インストール型)向けの商品です。(WordPress.comでの動作保証はしておりません。)
【動作環境】AFFINGERタグ管理マネージャー4

では、なぜこのようなエラーが発生するのでしょうか?AFFINGER4のアップデートによって、内部のメソッドの実装が変更され、静的メソッドとして定義されたため、それ以前の非静的メソッドの呼び出しによってFatal Errorが発生するのです。つまり、AFFINGER4の新しいバージョンには、静的メソッドの使用が必須となったのです。

解決策としては、phpのバージョンを下げるか、カスタムコードをアップデートしてAFFINGER4の新しい静的メソッドを使用するように修正する必要があります。具体的には、次のような手順で対処することができます。

ポイント

静的でないメソッドを静的に呼んでしまう。

PHP 7.4までは静的でないメソッドも静的に呼んでもstaticとして定義されているように振る舞いましたが、PHP 8.0以降ではFatal Errorが発生します。

PHPのバージョンをダウングレードする方法

以下は、ConoHa WINGを使ってPHPのバージョンをダウングレードする方法です。

詳しくはコチラ

コードを修正する方法

  1. エラーが発生している箇所の特定: エラーメッセージやログを確認し、具体的にどの部分でエラーが発生しているのかを特定します。
  2. 非静的メソッドを静的メソッドに変更: エラーが発生している部分のコードを修正し、AFFINGER4の新しいバージョンで要求される静的メソッドを使用するように変更します。
  3. テストとデバッグ: コードの修正後、ウェブサイトをテストしてエラーが解消されたかどうかを確認します。必要に応じてデバッグツールを使用して問題の特定や修正を行います。
  4. ドキュメントの確認: AFFINGER4の公式ドキュメントやサポートフォーラムを参照し、アップデート後の変更点や新しい静的メソッドの使用方法について確認します。

これらの手順を踏むことで、AFFINGER4のアップデート後に発生する静的でないメソッドを静的に呼んでしまうFatal Errorを解決することができます。

まとめ


AFFINGERタグ管理マネージャー4のアップデート後に静的でないメソッドを静的に呼ぶFatal Errorが発生することがありますが、適切な修正手順を踏むことで問題を解決することができます。エラーが発生した場合は、カスタムコードの修正やPHPのバージョンをダウングレード、AFFINGER4のドキュメントの確認を行い、静的メソッドの使用に注意しながら問題を解決しましょう。

-Blog, プログラミング