【问题标题】:How do I add a class to every menu item automatically in a nav menu?如何在导航菜单中自动为每个菜单项添加一个类?
【发布时间】:2014-08-12 16:31:41
【问题描述】:

我目前有这个标记:

$defaults = array(
    'theme_location'  => '',
    'menu'            => 'main-nav',
    'container'       => 'ul',
    'container_class'    => 'nav navbar-nav',
    'before'          => '<button class="btn btn-warning">',
    'after'           => '</button>',
    'menu_class'      => '',
    'menu_id'         => 'menu',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<div class="col-md-6 col-md-offset-3">%3$s</div>',
    'depth'           => 0,
    'walker'          => ''
);
wp_nav_menu( $defaults );

这里是my site的例子

使用上面的当前结构,除了 firefox 和 ie 之外,似乎链接对于 chrome 都可以正常工作

另外,bootstrap 的元素调用

内的 href 链接

任何建议都会很棒!

【问题讨论】:

    标签: wordpress menu customization


    【解决方案1】:

    删除items_wrap 选项; wordpress 菜单由&lt;ul&gt;-tag 组成,您不应将容器插入其中。

    虽然您已经为菜单指定了一个 id,但您应该可以使用

    #menu li{
    ...
    }
    

    为您的菜单项设置样式(至少我是这样做的)。

    顺便说一句,您的网站已离线。

    向菜单项添加类

    以下正则表达式允许您为导航的每个(每个!)元素添加一个类,该类拥有class 标签。由于这只影响li 标签,它工作得很好。用此代码替换您的 wp_nav_menu 调用:

    $menu = wp_nav_menu(array(
        'echo'=>0, // this is important
        'menu'=>'YOUR_MENU_SLUG',
        // your args here
    ));
    
    $menu_item_class = 'YOUR_CLASS_NAME';
    $menu = preg_replace('/class="([^"]*)"/', 'class="$1 '.$menu_item_class.'"', $menu);
    print($menu);
    

    如果你觉得幸运,你可以通过让它匹配li标签来增强正则表达式,但上面的代码肯定会工作。

    【讨论】:

    • 我完全理解这种方法,但我试图在导航菜单中自动为每个菜单项的链接添加一个类。
    • 我将其添加到我的答案中。
    • 感谢您的回复保罗。我感谢您的帮助。我已经尝试过你的代码,它确实有效,但不一定是我需要的方式......我将集思广益我的选择并尽快回到这个线程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多