つい先日、XサーバーのPHPバージョンを「PHP7.1.2」にバージョンアップしたら、運営していた、WordPressサイトのヘッダー部分に以下の様なエラーが出てしまいました。
今回は、かなり苦労しましたがなんとか解決しました。他にも同じようなエラーで悩んでいる方もいらっしゃるかもしれませんので、ログとして残して置きます。
発生したエラーコード
Warning: call_user_func_array() expects parameter 1 to be a valid callback, no array or string given in /home/xxx/xxx.com/public_html/xxx/wp-includes/class-wp-hook.php
エラーをgoogleで翻訳すると、「警告:call_user_func_array()は、パラメータ1が有効なコールバックであることを期待しています。配列/文字列は/home/xxx/public_html/wp-includes/class-wp-hook.php行298にありません。」という事になります。
テーマファイルに問題がある場合
googleでいろいろ調べると、このエラーはプラグインの不具合で発生している事が多かったです。ただ、今回は、テーマの方に問題がありました。
問題のあるコードを探す。
エラーコードを頼りに問題のあるコードを探すと、WordPressのコアファイルにたどり着いてしまいます。
その為、正直今回の問題のあるコードを探すのは一苦労でした。
結論から言いますと、「function.php」のオリジナルウィジェットの部分が問題でした。
class MY_Widget_Recent_Widget extends WP_Widget_Recent_Posts{ オリジナルウィジェットのコード } add_action('widgets_init', register_widget('MY_Widget_Recent_Widget'));
上記のコードを下記の様に変更します。
問題のあるコードを修正する
add_action( 'widgets_init', function(){ class MY_Widget_Recent_Widget extends WP_Widget { オリジナルウィジェットのコード } register_widget( 'MY_Widget_Recent_Widget' ); });
これで、無事エラーが消えました。
テーマファイル以外(プラグイン)に問題がある場合
上記はテーマファイルに問題がある場合ですが、使用しているプラグインに問題がある場合もあります。
その場合は、使用しているプラグインを1つづつ「停止」にしていって、どのプラグインが原因でエラーが表示されているかを確認します。
今回は、使用しているテーマが「カスタムウィジェット」を採用していて、ソースコードがPHP7.0に対応していない場合に発生するエラーでした。
以上「サーバーのPHPのバージョンを7.0にアップしたらWordPressでエラーが出た」のご紹介でした。
[lessoncta]