* 文章内容很有用,那就5星好评吧!😘

0 / 5 好评 5

Your page rank:

大家好,我是FUNION数字营销实战派飞小优,近期在给客户搭建网站过程中发现有些主题的导航primary menu是没有ID属性的,简单点就是menu-item-xxx的样子,因此在需要独立控制该菜单下的css时就会出现问题,若按照常规思路修改很容易造成全局污染,所以简单的办法就是在菜单的属性中添加一个ID,这样一来就可以独立控制了。

实现方案

添加function代码

若是针对li标签生效,代码如下:

add_filter('nav_menu_css_class', 'add_data_nav_id_to_li', 10, 4);
function add_data_nav_id_to_li($classes, $item, $args) {
    if ($args->theme_location == 'primary') {
        $classes[] = '类名';
        $classes[] = '类名-' . $item->ID;
    }
    return $classes;
}

若是要针对A标签,则代码如下:

add_filter('nav_menu_link_attributes', 'add_data_nav_id_to_menu', 10, 3);
function add_data_nav_id_to_menu($atts, $item, $args) {
    if ($args->theme_location == 'primary') { 
        $atts['data-nav-id'] = '类名-' . $item->ID;
    }
    return $atts;
}

注意,一定要查找你的主导航位置,一般是primary ,添加到function.php中后,在前端查看下是否生效

查看前端生效

如何给主导航菜单添加data-nav-id属性实现独立的样式效果?

前端能看到menu-item-xxx 类名加数字就没问题了。

CSS控制

那接下来就是单独给类名添加CSS,比如某个下拉菜单的二级菜单需要添加border-bottom,呢则可以添加下该css代码:

.nav-item-5 > a, .nav-item-6 > a,.nav-item-15 > a {
    border-bottom: 1px solid #eaeaea;
    border-radius: 0!important;
}

添加到样式表中后就可以在前端进行查看是否生效,如:

前端的bottom-border属性生效

以上就是关于如何给主导航菜单添加data-nav-id属性实现独立的样式效果的解决方案,赶快去试试吧!

提交需求表单



    发表回复

    Please Login to Comment
    售前
    微信

    扫码了解更多服务

    qr

    1对1专家沟通

    小程序

    扫码体验小程序

    funion_xcx

    您70%的潜在客户正在Deepseek/KIMI/豆包/ChatGPT中流失——抢占AI搜索第一推荐位,今日上线! 生成式引擎优化(GEO)服务首发|让企业官网成为AI机器人的「首选答案供应商」                          👉 了解GEO服务