こんにちは。Webloco代表/Webディレクターのヤブです。
つい先日、XサーバーのPHPバージョンを「PHP7.1.2」にバージョンアップしたら、運営していた、WordPressサイトのヘッダー部分に以下の様なエラーが出たため、ちょっと焦ってしまいました。
他にも同じようなエラーで悩んでいる方もいらっしゃるかもしれませんので、ログとして残して置きます。
発生したエラーコード
Warning: Declaration of description_walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /home/xxx/xxx.com/public_html/xxx/wp-content/themes/xxx/functions.php on line 0
エラーの意味は、「継承によりメソッドをオーバーライドする場合は、継承元と同じメソッド定義にする。」という事になります。
もう少し分かりやすく解説すると、今回の場合、「親のクラスと引数が違う為、同じ引数にしてちょうだい。」と言う事です。
問題のあるコードを探す。
エラーコードよりfunction.phpの中の「start_el」を検索してみると、下記の様なコードがありました。
class description_walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth, $args) { global $wp_query; $indent = ( $depth ) ? str_repeat( "t", $depth ) : '';
上記のコードの中の「&$output, $item, $depth, $args」を下記の様に変更します。
問題のあるコードを修正する
class description_walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) { global $wp_query; $indent = ( $depth ) ? str_repeat( "t", $depth ) : '';
これで、無事エラーが消えました。めでたしめでたし。
今回は、使用しているテーマが「カスタムナビ(メニュー)」を採用していて、ソースコードがPHP7.0に対応していない場合に発生するエラーでした。
以上「サーバーのPHPのバージョンを7.0にアップしたらWordPressでエラーが出た」のご紹介でした。