我在wordpress中遇到wp_nav_menu问题。我想制作Li元素的结构,其中所有元素都将具有类" menu-li"。但它对我不起作用。我在function.php文件中有这个:
register_nav_menus(
array(
'primary-menu' => __( 'Primary Menu' ),
'secondary-menu' => __( 'Secondary Menu' )
));
然后我在Wordpress管理面板中创建了菜单,现在我想将我的菜单添加到我的主题中。
<?php
$defaults = array(
'theme_location' => 'primary-menu',
'menu' => '',
'container' => '',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu-li',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul>%3$s</ul>',
'depth' => 0,
'walker' => ''
);
wp_nav_menu( $defaults );
?>
它将所有elemnet显示为ul中的li但没有类&#34; menu-li&#34;。如何将其添加到所有li元素?
答案 0 :(得分:8)
wp_nav_menu()
的menu_class
参数控制添加到<ul>
包装元素的类,而不是单个<li>
。要向菜单项添加类,您需要使用nav_menu_css_class
filter。
以下是它的工作原理(将其添加到您的主题functions.php
文件中):
add_filter ( 'nav_menu_css_class', 'so_37823371_menu_item_class', 10, 4 );
function so_37823371_menu_item_class ( $classes, $item, $args, $depth ){
$classes[] = 'menu-li';
return $classes;
}
这会将menu-li
类添加到每个菜单项。
如果您愿意,也可以根据传递给此过滤器的$item
,$args
等有条件地执行此操作。
答案 1 :(得分:3)
如果您需要在自定义菜单中添加类,请使用下一个代码:
add_filter('nav_menu_css_class','arg_menu_classes',110,3);
function arg_menu_classes($classes, $item, $args) {
if($args->menu == 'FooterMenu') { // name need menu
$classes[] = 'col-6 col-sm-6'; // add classes
}
return $classes;
}