リストアイテムにクラスを追加したいwp_nav_menu
があります。私はこれがスクリーンオプションメニューから 'css classes'を選ぶことによってできることを知っています、しかしそれから私はすべてのli
にクラスを与えなければなりません。
私は2深度メニューを持っています。 (例えば)
これはwp_nav_menu
関数で可能ですか?コーデックスを検索しましたが、「前にリンク」と「後にリンク」しか見つかりませんでしたが、それが必要なものではないと思います。
nav_menu_css_class
フィルタがあります。クラスを追加するのは簡単です。
function add_classes_wpse_130358($classes, $item, $args) {
$classes[] = 'new-class';
return $classes;
}
add_filter('nav_menu_css_class','add_classes_wpse_130358',1,3);
しかし、Walker_Nav_Menu
フィルタは不思議なことにdepth
変数にアクセスできないため、おそらくwalker_nav_menu_start_el
を拡張するか、代わりにnav_menu_css_class
フィルタを使用する必要があります。しかしwalker_nav_menu_start_el
では必要な場所にクラスを設定することはできませんので、PHPは十分新しいと仮定してください...
function depth_classes_wpse_130358($item_output, $item, $depth, $args) {
add_action(
'nav_menu_css_class',
function() use ($depth) {
$depth++;
$classes[] = "depth-{$depth}";
return $classes;
}
);
return $item_output;
}
add_filter('walker_nav_menu_start_el','depth_classes_wpse_130358',1,4);
あなたは0より大きいすべてのレベルに対してdepth-N
を得るでしょう。
私はこれをする必要があることを今まで思い出しません。既存のマークアップは常に十分ですが、そこに行きます。