Wp_nav_menuのul.sub-menuをdivで囲むことができる方法はありますか
そのため、たとえばマークアップは次のようになります。
<ul class="menu">
<li><a href="/">Item 1</a></li>
<li>
<a href="/">Item 2</a>
<ul class="sub-menu">
<li><a href="/">Item 1</a></li>
<li><a href="/">Item 1</a></li>
</ul>
</li>
<li><a href="/">Item 1</a></li>
<li><a href="/">Item 1</a></li>
</ul>
これに
<ul class="menu">
<li><a href="/">Item 1</a></li>
<li>
<a href="/">Item 2</a>
<div class="sub-menu-wrap">
<ul class="sub-menu">
<li><a href="/">Item 1</a></li>
<li><a href="/">Item 1</a></li>
</ul>
</div>
</li>
<li><a href="/">Item 1</a></li>
<li><a href="/">Item 1</a></li>
</ul>
"sub-menu-wrap"はカスタムdivです。
これは可能ですか?
カスタムウォーカーを使用する 、メソッドstart_lvl()
とend_lvl
を拡張する。
テストされていないサンプルコード
class WPSE_78121_Sublevel_Walker extends Walker_Nav_Menu
{
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<div class='sub-menu-wrap'><ul class='sub-menu'>\n";
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "$indent</ul></div>\n";
}
}
あなたのテーマでの使い方:
wp_nav_menu(
array (
'theme_location' => 'your-theme-location-EDIT-THIS',
'walker' => new WPSE_78121_Sublevel_Walker
)
);