2017-08-03 82 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