• WordPressのカスタムメニューには管理画面で個別にCSSのクラス名などを追加することができますが、「data-toggle=”dropdown”」のような属性を追加することは可能でしょうか?

    functions.phpからフィルターフックなどを使ってで実装したいと考えております。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんばんわ、lonlypopさん

    コアの Walker_Nav_Menu クラスをオーバーライドするクラスを作成して、wp_nav_menu の args の walker に作成したクラスを new してあげればよいと思います。

    詳しくは wp_nav_menu をご覧ください。

    こんにちは

    nav_menu_link_attributes フィルタが使えます

    add_filter( 'nav_menu_link_attributes', 'my_nav_menu_attr_add', 10, 3 );
    
    function my_nav_menu_attr_add( $atts, $item, $args ) {
    
        /** see html source
         * <li id="menu-item-25840" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25840">
         * <a href="" data-toggle="modal">example</a></li>
         */
    //menu item id
        $menu_target = 25840;
        if ( $item->ID == $menu_target ) {
            $atts['data-toggle'] = 'modal';
        }
        return $atts;
    }
    トピック投稿者 lonlypop

    (@lonlypop)

    nobita様

    早速ありがとうございます。
    こちらはメニューの

      タグなどにも使えるのでしょうか?

    例)
    <nav id=”menu”>
    <ul class=”ここに任意のクラスを入れたい”>
    <li class=””>メニュー1
    <li class=””>メニュー2
    <li class=””>メニュー3

    </nav>

    クラスを追加する場合は、nav_menu_css_class フィルタを使うといいかも、、、

    function my_wp_nav_menu_add_custom_class( $classes, $item ) {
        if ( $item->ID == 25840 ) {
            $classes[] = "my_element";
        }
        return $classes;
    }
    
    add_filter( 'nav_menu_css_class', 'my_wp_nav_menu_add_custom_class', 10, 2 );

    ただ、menu-item-25840 みたいに、ユニークなクラスがすでにあるので、CSSなどの用途でしたら、既存クラスをうまく使ったほうがいい場合が多いと思います。

    間違ったかも、ULにクラスを与えたい場合は、

    http://codex.wordpress.org/Function_Reference/wp_nav_menu

    $defaultの項目を参照してください

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「WordPressのカスタムメニューに独自の属性を追加したい」には新たに返信することはできません。