如果顶级菜单项有多个子级,则将类添加到顶层菜单项

时间:2016-01-27 作者:LBF

我有一个WP nav菜单,我需要向任何顶层添加一个类<li> 如果该项有多个级别的子项(也就是说,其子菜单也有一个子菜单)。像这样:

<ul>
    <li>Parent
        <ul class="sub-menu">
            <li>Sublink1</li>
            <li>Sublink2</li>
        </ul>
    </li>
    <li>Parent</li>
    <li class="ADD-CLASS-HERE">Parent <!-- add class to this item -->
        <ul class="sub-menu">
            <li>Sublink1</li>
            <li>Sublink2</li>
            <li>Sublink3
                <ul class="sub-menu">
                    <li>Sublink1</li>
                    <li>Sublink2</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>Parent</li>
    <li>Parent</li>
    <li>Parent
        <ul class="sub-menu">
            <li>Sublink1</li>
            <li>Sublink2</li>
        </ul>
    </li>
</ul>
我想我需要使用助行器来实现这一点。(我不想在WP菜单设置中手动添加类。)我曾尝试使用我找到的一些示例Walker,但未能将该类添加到0级祖先项。谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Dejo Dekic 整理而成

不确定,但也许像这样的事情会奏效?添加到函数。php。请参见说明here.

//This function is responsible for adding "my-parent-item" class to parent menu item\'s
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
    //Check if the item is a parent item
    if ( $item->menu_item_parent && $item->menu_item_parent > 0 ) {
        $parents[] = $item->menu_item_parent;
    }
}

foreach ( $items as $item ) {
    if ( in_array( $item->ID, $parents ) ) {
        //Add "menu-parent-item" class to parents
        $item->classes[] = \'my-parent-item\';
    }
}

return $items;
}

//add_menu_parent_class to menu
add_filter( \'wp_nav_menu_objects\', \'add_menu_parent_class\' ); 
因此,如果可以使用Jquery,可以这样做:

$(\'ul li.menu-parent-item:has(ul ul)\').addClass(\'your class\');

相关推荐

WordPress中声明SplitMenuWalker::Walk($Elements,$max_Depth)时出现警告

我开始在WordPress网站上收到以下错误:警告:SplitMenuWalker::walk($elements,$max\\u depth)的声明应与/home/relati67/public\\u html/wp content/themes/mentis/inc/mega menu/split menu中的walk::walk($elements,$max\\u depth,$args)兼容。php第0行我不知道在这里该怎么办。我发现了一个具有类似内容的线程,但错误指向特定行(不是第0行),并且不