wp_nav_menu()の挙動がおかしい!?

メニューを出力するときにwp_nav_menu()を使います。
メニューはULタグで構築されるのですが、そのULの一段上にコンテナとしてDIVでラップされてしまいます。
そこで引数でcontainerfalseにするのですが、どうも環境によって効かないことがあるようです。

コンテナを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のバージョンは同じなのに環境の違うサーバで動作が異なって困った。

certificate Docker Gutenberg Hyper-V openssl PHP React ReduxToolkit REST ubuntu WordPress オレオレ認証局 フレームワーク