2017-08-03 9 views
1

私はli要素にクラスを追加するいくつかの解決策を見つけましたが、残念ながらそれは機能しません。私は間違って何をしていますか?ここ は私のコードです:は、WordPress nav_menuのli要素にクラスを追加できません

EDITED:私もそのI'Aがページ上

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> 
を使用して、2番目のメニューを追加しました
+0

あなたはWordpressが追加したすべてのクラスを削除しようとしていますか?自分で_only_を追加していますか? – JakeParis

+0

自分自身を追加して、今、私はli要素のデフォルトのクラスを持っていません – Andrew

+0

私は別のワードプレスサイトであなたのコードがうまく動作することを確認することができました(元の方法と、以下)。おそらくあなたはキャッシュプラグインを持っていますか? – JakeParis

答えて

1

nav_menu_css_classから返すものは配列でなければなりません。あなたは、単一の文字列の配列を返す技術的にですが、配列内の1つの要素として、各クラスでそれを行うには、より正確になります:それはあなたの問題を解決するかどう

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

私は疑問に思います。

+0

まだクラスは適用されていません、私は単一のクラス名を作成しようとしましたが、動作しません – Andrew

関連する問題