つい先日、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]