一日中、フロントエンドにある必要があるマークアップに適合するカスタム メニュー ウォーカーを作成するのに苦労しています。
目的のマークアップは次のとおりです。
<nav class="menu cf">
<div class="menu__inner cf">
<ul class="menu__list">
<li class="menu__item menu__item--first">
<a href="" class="menu__link">Menu item 1</a>
</li>
<li class="menu__item menu__item--has_children cf">
<a href="" class="menu__link">
Menu item 2
</a>
<a href="" class="menu__link--toggle">
<i class="icon-arrow-thin-down"></i>
</a>
<div class="sub_menu__wrap">
<div class="container">
<div class="gr-12 gr-3@lg">
<div class="sub_menu__heading">Menu heading (parent menu title)</div>
</div>
<div class="gr-12 gr-9@lg">
<ul class="sub_menu">
<li class="sub_menu__item gr-12 gr-4@lg">
<a href="" class="sub_menu__link">Submenu item 1</a>
</li>
<li class="sub_menu__item gr-12 gr-4@lg">
<a href="" class="sub_menu__link">Submenu item 2</a>
</li>
<li class="sub_menu__item gr-12 gr-4@lg">
<a href="" class="sub_menu__link">Submenu item 3</a>
</li>
<li class="sub_menu__item gr-12 gr-4@lg">
<a href="" class="sub_menu__link">Submenu item 4</a>
</li>
<li class="sub_menu__item gr-12 gr-4@lg">
<a href="" class="sub_menu__link">Submenu item 5</a>
</li>
</ul>
</div>
</div>
</div>
</li>
<li class="menu__item menu__item--last">
<a href="" class="menu__link">Menu item 3</a>
</li>
</ul>
</div>
Walker_Nav_Menuを拡張したカスタムクラスの例がいくつかあり ますが、それらの例は良くないと思います。
これが私がこれまでに持っているものです:http://pastebin.com/qnPx9J67
重要!次のように、クラスに BEM 方法論を導入したいと考えています。
$menuListClass = 'menu__list';
$menuItemClass = 'menu__item';
$menuLinkClass = 'menu__link';
$subMenuClass = 'sub_menu';
$subMenuClass = 'sub_menu';
$submenuItemClass = 'sub_menu__item';
$subMenuLinkClass = 'sub_menu__link';
また、いくつかのデフォルトの Wordpress クラスを保持したいのですが、この形式で: 例:
.menu-item-has-children -> .menu__item--has_children
.current-menu__item -> .menu__item--current
私はあまり良いPHPを知らないので、誰かがこれを手伝ってくれることを願っています. :)
ソースリンク: https://developer.wordpress.org/reference/classes/walker_nav_menu/