WordPress-このサイトで重大なエラーが発生しました。
WordPressを使っていて、PHP8にしたらこのサイトで重大なエラーが発生しました。とでました。このときの対処法となります
サーバー環境
- WordPRess:5.9
- テーマ:オリジナル
- PHP:7.4.13(既存環境)
- PHP:8.0.3(新環境)
- 切り替え方法:phpenv使用
状況
- PHP7.4.13の状態では問題なく表示されている
- PHP8.0.3に切り替えると500エラーとなる
- WordPressにはこのサイトで重大なエラーが発生しました。 とだけでる
こんな感じです。プラグインを変えたりなにもしてません。
このサイトで重大なエラーが発生しました
WordPRessではこのような表記になりますが、実際には500エラーとなります。サーバー側の問題となります
サーバー側の問題ではなくPHP
500エラーだけではわからないので、WordPressのデバッグモードをオンにします
wp-config.phpファイルを編集してデバッグモードをtrueにします
/** * 開発者へ: WordPress デバッグモード * * この値を true にすると、開発中に注意 (notice) を表示します。 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。 * * その他のデバッグに利用できる定数についてはドキュメンテーションをご覧ください。 * * @link https://ja.wordpress.org/support/article/debugging-in-wordpress/ */ define( 'WP_DEBUG', true ); //falseになっているのでtrueにする
これでデバッグモードとなり、エラー文が表示されるようになります。
エラー文
エラー文がでたらこんなエラーでした
Fatal error: Uncaught Error: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function "my_css_attributes_filter" not found or invalid function name
エラー内容としては、関数が見つからない or 関数名が無効だよ って内容です
該当箇所
この関数を使っている箇所を調べてみました
//カスタムメニューのliのid,classを削除 add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1); add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1); add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
ありました。WordPressのカスタムメニューのIDとクラスを削除するときに使ってました
コメントアウトしてみる
とりあえずエラー箇所をコメントアウトしてみます
//カスタムメニューのliのid,classを削除 /* add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1); add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1); add_filter('page_css_class', 'my_css_attributes_filter', 100, 1); */
問題なく表示されました。僕の場合はこれが原因でした。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS