2017-08-03 86 views
1

我发现了一些向li元素添加类的解决方案,但不幸的是它不工作。我究竟做错了什么? 这里是我的代码:不能为li元素添加class nav_menu

编辑:我还添加了第二个菜单,使用页面

function.php

function main_menu() { 
    add_theme_support('menus'); 
    register_nav_menus(array(
     'primary' => __('Primary Main Menu'), 
    )); 
    register_nav_menus(array(
     'secondary' => __('Primary Portfolio Navigation'), 
    )); 
} 


//Remove ul wrapper from menu 
function remove_ul ($menu){ 
    return preg_replace(array('#^<ul[^>]*>#', '#</ul>$#'), '', $menu); 
} 
add_filter('wp_nav_menu', 'remove_ul'); 


function special_nav_class ($classes, $item) { 
    if (in_array('current-menu-item', $classes)){ 
     $classes[] = 'active '; 
    } 
    return $classes; 
} 

function menu_item_class($classes, $item, $args) { 
    unset($classes); 
    $classes[] = "col-xs-6 col-sm-6 col-md-2 filter"; 
    return $classes; 
} 


//Menu 
add_action('after_setup_theme', 'main_menu'); 
add_filter('nav_menu_css_class', 'menu_item_class', 1, 3); 

的index.php

<ul> 
    $args = array(
     'container' => false, 
     'menu_id' => false, 
     'items-wrap' => '', 
     'theme_location' => 'secondary' 
    ); 
     wp_nav_menu($args); ?> 
</ul> 
上i'a
+0

您是否尝试删除Wordpress添加的所有类以及_only_添加您自己的? – JakeParis

+0

加我自己的,现在我没有li元素上的任何默认类 – Andrew

+0

我可以在另一个WordPress网站上验证你的代码工作得很好(你最初拥有它的方式和我的答案中的数组一样下面)。也许你有一个缓存插件? – JakeParis

回答

1

你从nav_menu_css_class返回的内容应该是一个数组。您是技术上与返回一个字符串数组,但它会更正确与每个类做的阵列中的一个元素:

function menu_item_class($classes, $item, $args) { 
    unset($classes); 
    $classes = ["col-xs-6","col-sm-6","col-md-2","filter"]; 
    return $classes; 
} 

我不知道这是否会解决您的问题。

+0

仍然没有应用类,我甚至试图使单个类的名称,但不工作 – Andrew