WordPressでカスタムメニューの出力をカスタムしようと【Walker_Nav_Menu】のコードをfunction.phpに記述して公開したところ、こんなエラーが。
【 Warning: Declaration of My_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 /xxxxxxxxxxx/wp-content/themes/xxxxx/functions.php on line 0 】
functions.phpは確かにいじっていたけど【php on line 0】にある0行目ってなんじゃそりゃ。。。
調べてみるとサーバーのphpが7.0の場合に出るみたいですね。
英語サイトが結構出てきますがざっくりの翻訳だとこんな感じ。
“このエラーメッセージは、クラスdescription_walkerがWalker_Nav_Menuクラスを拡張し、start_el()メソッドをオーバーライドするが、署名が親クラスのメソッド定義と異なることを示しています。”
簡単に言うと“親のクラスと引数を合わせてね”みたいなことを言っています。
具体的な対処方法は以下の通りです。
//これを
function start_el(&$output, $item, $depth, $args) {
//このように変更
function start_el(&$output, $item, $depth = 0, $args = Array(), $id = 0) {
これでエラーメッセージが消えました。
いろんなサーバーでサイトを作成してますが今のところこのエラーが出たのはxserverくらいですね。
エラーが表示されてしまうとかなり焦りますが、解決方法はちゃんとあるので落ち着いて対処しましょう。