• 解決済 heppoko

    (@heppoko)


    カスタムメニューで特に何もしないと、liタグに大量のクラス名が付与されますが、これをとにかく削除したいと思って調べたところ手段は見つかりました。

    下記をfunctions.phpに記載しました。

    // クラスを削除して、表示中メニューにcurrentクラスを付与する

    add_filter( 'nav_menu_css_class', 'remove_to_currentClass', 10, 2 );
    function remove_to_currentClass( $classes, $item ) {
        $classes = array();
        if( $item -> current == true ) {
            $classes[] = 'current';
        }
        return $classes;
    }

    // ID を削除する

    add_filter('nav_menu_item_id', 'removeId', 10);
    function removeId( $id ){
        return $id = array();
    }

    しかしクラス名は確かに消えたのですが、「CSS class (オプション)」で記載したクラス名まで消えてしまいます。「nav_menu_css_class」に「CSS class (オプション)」が含まれているのだと思うのですが、このオプション部分のクラス名だけは表示させる手段というのはあるのでしょうか?

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    $item->_menu_item_classes

    で、設定されたclass名を配列で取得できますので、これを $classes に含めて下さい。

    トピック投稿者 heppoko

    (@heppoko)

    jim912様
    早々のお返事ありがとうございます。
    漠然と無理だと思っていたのですが嬉しい限りです。
    早速やってみようと思ったのですが…
    すみません、「$item->_menu_item_classes」をどこに追記すればよいのでしょうか?(汗)
    あれこれやってみたのですがうまくいかず…
    恐縮ですがご回答いただければ幸いです。

    トピック投稿者 heppoko

    (@heppoko)

    「$item->_menu_item_classes」を「$classes」に含める。
    というのがやはり答えが見つかりませんでした。
    お手すきの時にでも、書き方をご教授いただければ幸いです。
    よろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    classes = $item->_menu_item_classes

    で、どうでしょうか。

    トピック投稿者 heppoko

    (@heppoko)

    私の書き方もおおいにまずかったと反省しております。
    初心者ゆえにどこにどうそれを追記してやれば良いのかが分りかねております。

    add_filter( 'nav_menu_css_class', 'remove_to_currentClass', 10, 2 );
    function remove_to_currentClass( $classes, $item ) {
        $classes = array();
        if( $item -> current == true ) {
            $classes[] = 'current';
        }
        return $classes;
    }

    このソースにどこにどのように追記すれば良いのかをご教授いただければ幸いです。

    トピック投稿者 heppoko

    (@heppoko)

    すいませんです。解決できました!
    $classes = array();
    ここを置き換えれば良いのではないか、とは思ったのですが、
    「()」を残してしまったためにうまくいかなかったようです。

    本当に助かりましたです。
    重ね重ねありがとうございました!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタムメニューで「CSS class (オプション)」だけ表示したい」には新たに返信することはできません。