サポート » インストール » WordPress5.3へアップデートした際の不具合について

  • 解決済 makintarou

    (@makintarou)


    下記内容でサイトを作成しております。
    WordPress:5.3
    使用テーマ:オリジナル
    PHP 7.3

    WordPress5.3になったタイミングで、運営しているサイトのWordPressもアップデートしたときに下記エラーメッセージが管理画面上部に表示するようになりました。

    Warning: Declaration of border_link_list::walk($elements, $max_depth) should be compatible with Walker::walk($elements, $max_depth, …$args) in /home/○○○/www/WordPressをダウンロードしているフォルダー名/wp-content/themes/テーマ名/functions.php on line 0

    いろいろ調べていくうちに5.3になったタイミングでクラスのパラメータが変わったようで、使用しているクラスや関数で影響が出るものがあるということがわかりました。

    エラーメッセージが出た、functions.phpを確認したところwalk()を使用している箇所がありました。

    // カスタムウォーカー(フッター)
    class border_link_list extends Walker {
    	public function walk( $elements, $max_depth ) {
    		$list = array ();
    
    		foreach ( $elements as $item )
    			$list[] = '<li><a href="' . $item->url. '" title="' . $item->title . '">'. $item->title . '</a></li>';
    
    		return join( '<li>/</li>', $list );
    	}
    }

    この箇所が問題があるのだろう所までは調べてわかったのですが、何をどうすれば良いのか分からず質問させていただきました。

    phpを5.6に下げるとエラーメッセージは出ませんでした。しかしPHP7.3で運用したいのでどうすればエラーメッセージが出なくなるか教えていただけますでしょうか。

    よろしくお願いいたします。

    • このトピックはmakintarouが8ヶ月、 1週前に変更しました。
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • CG

    (@du-bist-der-lenz)

    WordPress 5.3 より、Walker::walk() には …$args パラメータが追加されました。

    Walker::walk

    public function walk( $elements, $max_depth ) {

    public function walk( $elements, $max_depth, ...$args ) {

    • この返信は8ヶ月、 1週前にishitakaが編集しました。

    ご回答ありがとうございます。

    class border_link_list extends Walker {
    	public function walk( $elements, $max_depth , ...$args ) {
    		$list = array ();
    
    		foreach ( $elements as $item )
    			$list[] = '<li><a href="' . $item->url. '" title="' . $item->title . '">'. $item->title . '</a></li>';
    
    		return join( '<li>/</li>', $list );
    	}
    }

    上記のように, …$args を追加するとシンタックエラーがありますと出ます。

    私の勉強不足で知識が乏しくご回答していただいてる方にご迷惑をおかけしますが、ご教授お願いいたします。

    …$args パラメータを追加すると、シンタックエラーがでると書きましたが、ためしに「wp-includes/class-wp-walker.php」をドリームウィーバーで開くと同じように、…$argsの記述がある部分がシンタックエラーになってました。

    もしかした、ドリームウィーバーだけかなと、ネットの構文チェッカーで調べるとシンタックエラーはありませんでした。となりました。

    試しに、…$args パラメータを追加した状態でアップロードしてみると、エラーメッセージは表示しなくなりました。

    ドリームウィーバーはCS6を利用していますが、それが原因だったのでしょうか、不安なので追加で投稿しました。

    以上よろしくお願いいたします。

    Dreamweaver を使用したことがないので分からないのですが、PHP バージョンの設定ではないでしょうか。
    可変長引数リスト (…) は、PHP 5.6 以降で実装されました。
    参考ページ: https://www.php.net/manual/ja/functions.arguments.php#functions.variable-arg-list

    ご回答ありがとうございました。

    調べた結果、DreamweaverCS6ではphp5.4以降はサポートしいないとのことでした。

    そんな初歩的なことで、頂いた回答で、問題が解決しているのにも関わらず、無駄なお時間を使わせて申し訳ございませんでした。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「WordPress5.3へアップデートした際の不具合について」には新たに返信することはできません。