如何为两个菜单导航栏混合HTML元素类型?
我正在构建一个WordPress主题与引导4。
WordPress的菜单内容应该来自菜单选项,输出到一个引导带4导航栏。我在用这个引导带4-特定的wp_nav_menu肚脐步行者 ..。
require_once get_template_directory() . '/inc/bs4navwalker.php';..。将nav文本链接的主菜单输出为无序列表,就像上帝意欲.
'primary', // name of wordpress menu
'theme_location' => 'primary',
'depth' => 2,
// :
// 'container' => 'false',
'container_id' => 'bs4navbar',
'container_class' => 'collapse navbar-collapse',
// :
'menu_id' => false,
'menu_class' => 'navbar-nav ml-auto',
// other:
'fallback_cb' => 'bs4navwalker::fallback',
'walker' => new bs4navwalker()
]);
?>
Button
Sign up
效果很好。输出是..。
Sandbox
Home
Trends
Custom
Strategy
Button
Sign up
但是,您将看到手动插入两个 元素的部分。我希望从WordPress菜单中动态生成这些代码,而不是硬编码,就像primary菜单一样。我做了第二个WordPress菜单,buttons。这就是我崩溃的地方..。我可以为buttons插入第二个D11调用,就在第一个调用primary之后. 'buttons', // name of wordpress menu
'theme_location' => 'buttons',
'depth' => 2,
// :
// 'container' => 'false',
'container_id' => 'bs4navbar',
'container_class' => 'collapse navbar-collapse',
// :
'menu_id' => false,
'menu_class' => 'navbar-nav ml-auto',
// other:
'fallback_cb' => 'bs4navwalker::fallback',
'walker' => new bs4navwalker()
]);
?>..。菜单项将被插入到正确的位置。问题是,这些项目是s在一个,就像primary菜单.我假设bs4navwalker被设置为将所有wp_nav_menu项输出为列表项,或者这可能是WordPress的操作。如何确保第二个菜单( buttons )中的项使用不同的结构获得输出,而不是D21元素?发布于 2018-08-20 13:03:09
以下是一个解决方案,尽管使用额外的PHP处理..。
false,
'theme_location' => 'buttons',
'items_wrap' => '%3$s',
'menu_class' => false,
'menu_id' => false,
'container' => 'false',
'container_class' => false,
'container_id' => false,
'before' => '',
'after' => ''
);
$menu = wp_nav_menu($options);
$output = strip_tags($menu, '');
echo preg_replace('/btn-primary/', 'btn-outline-primary', $output, 1);
?>这包括:去除不设置任何容器将每一项包装在标记中抑制回波剥去所有的标签( ) (除外)在最后一部分中,将btn-primary类的第一个实例替换为btn-outline-primary,以便保留两种颜色的按钮。这是输出..。Button
Learn MoreI更愿意使用WordPress自己的功能来设置菜单项类,而不是在这里对它们进行硬编码。
<#>Is有一种方法可以让这些类出现在nav项中,而不是使用 preg_replace**,还是这个方法不支持它?**
https://wordpress.stackexchange.com/questions/311941
复制相似问题