2016-06-14 15 views
2

wordpressのwp_nav_menuに問題があります。私はLi要素の構造を作りたいと思っています。すべての要素にclass "menu-li"があります。しかし、それは私にとってはうまくいかない。私はfunction.phpファイルでこれを持っている:wp_nav_menuのli要素へのクラスの追加

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をliとして表示しますが、 "menu-li"というクラスはありません。それをどのようにすべてのli要素に追加できますか?

答えて

5

のパラメータは<li>ではなく<ul>ラッパー要素に追加されるクラスを制御します。メニュー項目にクラスを追加するには、nav_menu_css_class filterを使用します。これは、すべてのメニュー項目にmenu-liクラスを追加します

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; 
} 

:ここ

はどのように動作します(あなたのテーマのfunctions.phpファイルに以下を追加)です。

$item$argsなどに基づいて条件付きで行うこともできます。

+1

をあなたに男をありがとう:) WordPress用 – Roberto

+0

** 4.1 + **あなたのような、ADD_FILTERメソッドに2つの以上のパラメータを追加する必要がありますso .. 'add_filter( 'nav_menu_css_class'、 'so_37823371_menu_item_class'、10、4); '。詳細は、[here](https://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_class)を参照してください。 – Garth

+1

ありがとう@Garth。私の間違い!編集しました。デフォルトは10、1ですので、複数のパラメータを指定する必要があるときは常にそうです(WP 4.1以上には関係ありません)。 $クラスだけが必要な場合のもう一つのオプションは、あなたの関数内でそのパラメタを取ることだけです。デフォルトの10、1で十分です。 –

2

あなたは、次のコードを使用し、カスタムメニューにクラスを追加する必要がある場合:

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; 
} 
関連する問題