メニューを出力するときにwp_nav_menu()
を使います。
メニューはULタグで構築されるのですが、そのULの一段上にコンテナとしてDIVでラップされてしまいます。
そこで引数でcontainer
をfalse
にするのですが、どうも環境によって効かないことがあるようです。
コンテナをfalseに設定してみる。
wp_nav_menu(['container' => false, 'menu_id' => 'menu']);
効いている場合
<ul id="menu" class="menu"> ... </ul>
思い通り
効いてない場合
<div id="menu" class="menu"> <ul> ... </ul> </div>
意図せずDIVで囲まれている。
そのDIVにIDやクラスが追加されている。
実験X
そもそもコンテナって何なのかっていうと、ULを囲むタグのこと。
wp_nav_menu(['container' => 'x', 'menu_id' => 'menu']);
<x id="menu" class="menu"> <ul> ... </ul> </x>
解決策
ソースコードを読んでいて解決した例。
wp_nav_menu(['container' => 'ul', 'menu_id' => 'menu']);
コンテナをULにする。
<ul id="menu" class="menu"> ... </ul>
ラップされずに済んだ。
これはバグなのか環境なのか、WordPressのバージョンは同じなのに環境の違うサーバで動作が異なって困った。