こんにちは。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でエラーが出た」のご紹介でした。