
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にします
11 | define( 'WP_DEBUG' , true ); |
これでデバッグモードとなり、エラー文が表示されるようになります。
エラー文
エラー文がでたらこんなエラーでした
1 | 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 関数名が無効だよ って内容です
該当箇所
この関数を使っている箇所を調べてみました
2 | add_filter( 'nav_menu_css_class' , 'my_css_attributes_filter' , 100, 1); |
3 | add_filter( 'nav_menu_item_id' , 'my_css_attributes_filter' , 100, 1); |
4 | add_filter( 'page_css_class' , 'my_css_attributes_filter' , 100, 1); |
ありました。WordPressのカスタムメニューのIDとクラスを削除するときに使ってました
コメントアウトしてみる
とりあえずエラー箇所をコメントアウトしてみます
問題なく表示されました。僕の場合はこれが原因でした。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS