0

カスタム リンクからのみクラスを削除する方法があるかどうか知りたいですか? 少なくとも、動的リンクではなく、カスタム リンク「current-menu-ancestor current-menu-parent」からこれらのクラスを削除したいと考えています。

私はこのコードを使用しています:

add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($var) {
    return is_array($var) ? array_intersect($var, array('current-menu-ancestor current-menu-parent')) : '';
}

すべての静的および動的リンクから css クラスを削除しています。カスタム リンクから CSS クラスを削除したいだけです。

4

1 に答える 1

1

リンクにクラスが含まれているかどうかを確認しmenu-item-object-custom、結果を使用して CSS クラスを選択的にフィルタリングできます。

add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($classes) {
    // if this is not a custom link and not the home page, return the $classes intact, otherwise filter $classes 
    return is_array($classes) ? 
        (in_array("menu-item-object-custom", $classes) || is_front_page())? 
            array_diff($classes, array('current-menu-ancestor current-menu-parent'))
            : $classes // not a custom link
        : ''; // not an array
}
于 2012-10-16T15:45:13.587 に答える