如何在WordPress中仅将自定义类添加到NAV子菜单>li>a项?

时间:2019-03-26 作者:Johnny97

我这里有一个DOM:

<ul class="sub-menu">
    <li id="menu-item-1424" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat">
        <a href="#">Item</a>
    </li>
</ul>
我需要做的是,添加一个自定义类(has-ripple) 仅适用于sub-menu > a 项目:

<ul class="sub-menu">
    <li id="menu-item-1424" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat">
        <a href="#" class="has-ripple">Item</a>
    </li>
</ul>
这就是我所尝试的:

add_filter( \'nav_menu_link_attributes\', \'nav_menu_link_class\', 10, 3 );
function nav_menu_link_class( $atts, $item, $args ) {
    $class         = \'has-ripple\';
    $atts[\'class\'] = $class;

    return $atts;
}
这是可行的,但它也会将类添加到下拉列表之外的非子菜单a项中。那么我该怎么做才对呢?

2 个回复
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成

要仅应用于子菜单项,代码应为:

add_filter( \'nav_menu_link_attributes\', \'nav_menu_link_class\', 10, 2 );
function nav_menu_link_class( $atts, $item ) {
    if( !$item->has_children && $item->menu_item_parent > 0 ) {
        $class         = \'has-ripple\';
        $atts[\'class\'] = $class;
    }

    return $atts;
}

SO网友:Qaisar Feroz

尝试以下操作:Documentation

add_filter( \'nav_menu_link_attributes\', \'nav_menu_link_class\', 10, 4 );

function nav_menu_link_class(  $atts, $item, $args, $depth ) {

      if ( 0 !== $depth ) {
         $class         = \'has-ripple\';
         $atts[\'class\'] = $class;
      }
    return $atts;
}
我希望这会有所帮助。