Function.phpを介してwp_nav_menuリンクに特定のクラスを追加していますが、特定のメニューをターゲットにすることはできません。これは、ページ上のすべてのwp_menu_navをターゲットにしたものです。
function add_menuclass_active($ulclass) {
return preg_replace('/<a /', '<a class="list-group"', $ulclass, 1);
}
add_filter('wp_nav_menu', 'add_menuclass_active');
私は運もないで以下も使ってみました
function add_menuclass_active( $nav_menu, $args ) {
if( $args->theme_location == 'CUSTOM MENU' )
return preg_replace( '/<a /', '<a class="list-group"', $nav_menu, 1 );
return $nav_menu;
}
add_filter( 'wp_nav_menu', 'add_menuclass_active', 10, 2 );
私は以下のコードを試してみました、そしてそれはうまくいきました。
これをあなたのfunctions.php
に追加してください
register_nav_menus(array(
'top-menu' => __('Menu1', 'twentyfourteen'),
'side-menu' => __('Menu2', 'twentyfourteen'),
'footer-menu' => __('Menu3', 'twentyfourteen')
) );
function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
$menu_locations = get_nav_menu_locations();
if ( has_term($menu_locations['top-menu'], 'nav_menu', $item) ) {
$item_output = preg_replace('/<a /', '<a class="list-group" ', $item_output, 1);
}
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4);
最後に、ダッシュボードApperance->menus
からアンカーカスタムクラスを追加する必要がある特定のメニューに対して、オプション "Menu1"を選択する必要があります。 (アンカーリンクがカスタムクラスを必要としない他のメニューにはmenu2
またはmenu3
を選択してください)
特定のメニューの最初のメニュー項目に "active class"を追加するには、これを試してください。
function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
$menu_locations = get_nav_menu_locations();
if ( has_term($menu_locations['top-menu'], 'nav_menu', $item) ) {
$item_output = preg_replace('/<a /', '<a class="list-group" ', $item_output, 1);
if ($item->menu_order == 1){
$item_output = preg_replace('/<a /', '<a class="list-group active" ', $item_output, 1);
}
}
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4);
アクティブクラスをすべてのメニューの最初のメニュー項目に追加する必要がある場合は、これを使用します。
function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
$menu_locations = get_nav_menu_locations();
if ( has_term($menu_locations['top-menu'], 'nav_menu', $item) ) {
$item_output = preg_replace('/<a /', '<a class="list-group" ', $item_output, 1);
}
if ($item->menu_order == 1){
$item_output = preg_replace('/<a /', '<a class="active" ', $item_output, 1);
}
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4);