有一些preg_replace
, 我可以替换wp_nav_menu
, 所以我的一个菜单(有子菜单)现在看起来像这样。
<li class="nav-item nav-item-has-children dropdown menu-publication show">
<a class="nav-link" href="#">Publication</a>
<ul class="dropdown-menu">
<li class="nav-item menu-book">
<a class="nav-link" href="#">Book</a>
</li>
</ul>
</li>
但是,我还需要替换<a>
元素(该.nav-link
) 因此<a>
如下所示:<a class="nav-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" href="#">Publication</a>
问题是,我只想替换有子菜单的锚。我不想插手<a>
没有子菜单。我不知道该怎么做。有什么想法吗?最好不要重做整个菜单漫游器。。。
我正在考虑这样做:
function change_submenu_link($submenulink) {
return preg_replace(\'/a class="nav-link"/\',\'class="nav-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"\',$submenulink);
}
add_filter(\'wp_nav_menu\',\'change_submenu_link\');
问题是我不知道如何确保它只替换<a>
有子菜单。如果有has_submenu()
功能可能很方便。