wp_nav_menu の container を削除する

WordPressのロゴ。

wp_nav_menu 関数は、カスタムメニューを出力します。 出力する HTML タグをある程度操作することができ、パラメータ container は、 メニューをラップする(閉じる) タグを、nav か div から指定することができます。

また container に false を指定するとき、ラップするタグを出力しないように設定することができますが、 設定方法によっては、この設定が有効になりません。

ここでは container パラメータの値 false の問題について解説します。

テンプレートタグ/wp nav menu - Codex 日本語版 wp nav menu - Codex

container パラメータと使い方

wp_nav_menu 関数の container パラメータにはメニューをラップする要素を指定します。 指定する値は、div, nav, false のいずれかです。 規定値は、古い HTML の規格に合わせて div とされています(Wordpress 4.2 時点)。

HTML5 以降の規格に合わせて nav を指定することもできますが、 その場合には、role = "navigation" など別のパラメータを出力することができません。

したがって、もしも任意のパラメータを指定した nav 要素を出力したいのであれば、 container パラメータに false を指定します。 すると、div, nav のいずれのタグも出力されないので、任意のタグでラップすることができます。

<nav class="site-navigation main-navigation" role="navigation">
<?php
wp_nav_menu(array('theme_location' => 'main-menu',
                  'container' => false,
                  'items_wrap' => '<ul>%3$s</ul>'));
?>
</nav>

wp_nav_menu で container に false を指定した例

container に設定した false が機能しない問題

container に設定した false の値が機能しないケースがあります。 [外観] > [メニュー] > [位置の管理]などによって表示位置が決定される場合は、規定値の div がパラメータに設定されてしまいます。

container の設定値 false は、 [外観 > メニュー > メニュー設定 > テーマの位置] などによって、メニューの表示位置を決定する場合にのみ有効になります。 あるいはテーマの[外観] > [ナビゲーション] から、メニューを設定した場合に有効になります。