WP_NAV_MENU(),如何更改<li>类?

时间:2011-12-26 作者:Christian

我正在为我的网站创建菜单。静态数据如下所示:

<nav>
  <ul id="menu">
        <li class="item_1"><a href="#">Item 1</a></li>
        <li class="item_2"><a href="#">Item 2</a></li>
        <li class="item_3"><a href="#">Item 3</a></li>
        <li class="item_4"><a href="#">Item 4</a></li>
        <li class="item_5"><a href="#">Item 5</a></li>
        <li class="item_6"><a href="#">Item 6</a></li>
        <li class="item_7"><a href="#">Item 7</a></li>
        <li class="item_8"><a href="#">Item 8</a></li>
    </ul>
我已经能够理解如何定制<ul> 标签,以摆脱自动<div> 标签但是现在,我想定制<li> 标记,以便能够分配不同的class 通过CSS控制特定行为的名称。当我使用wp_nav_menu() 输出如下:

    <ul id="menu">
<li id="menu-item-111" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-111"><a href="http://mydomain.com/dummy/fashion/">Fashion</a></li>
    <li id="menu-item-112" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-112"><a href="http://mydomain.comdummy/documentary/">Documentary</a></li>
    <li id="menu-item-113" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-113"><a href="http://mydomain.com/dummy/events/">Events</a></li>
    <li id="menu-item-114" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-114"><a href="http://mydomain.com/dummy/portraits/">Portraits</a></li>
    </ul>
我想摆脱id<li> 标记并更改class 以反映我要链接到的页面的名称。基本上,我想输出与本文中第一段代码相同的内容。

我之所以这样做,是因为我使用了由CSS控制的自定义图像,而不是纯文本。

这可能吗?我应该使用什么策略来克服这个问题?

5 个回复
最合适的回答,由SO网友:fuxia 整理而成

使用custom walker, 删除任何不需要的内容并添加类。下面是我用来获取带有清晰标记的列表的助行器:T5_Nav_Menu_Walker_Simple.

您还可以筛选\'nav_menu_css_class\'\'wp_nav_menu_items\'. 但在我看来,学步班更容易理解和控制。

SO网友:Q Studio

转到外观>菜单-选择所需菜单-转到右上角的“屏幕选项”,选择“css类”-为每个菜单项添加一个类。。

SO网友:cweiske

设置<li> 分类至nav-link, bootstrap 4.3需要它:

function add_menu_link_class($atts, $item, $args)
{
    $atts[\'class\'] = \'nav-link\';
    return $atts;
}
add_filter(\'nav_menu_link_attributes\', \'add_menu_link_class\', 1, 3);
您还可以取消设置id 属性。

SO网友:Muhammad Mohibbullah

这是一种非常简单的呼叫方式li 类别和“;“任何类别”;易于更换。只需按照说明操作即可。

在导航区域使用此代码。

<?php
            $consult_menu = wp_nav_menu(array(
                    \'theme_location\' => \'topmenu\',
                    \'menu_id\' => \'menu\',
                    \'menu_class\' => \'navbar-nav m-auto\',
                    \'echo\' => false
                )
            );
            $consult_menu = str_replace(\'menu-item\', \'nav-item\', $consult_menu);
            echo $consult_menu;
            ?>
然后在浏览器上检查代码。查找wp默认类,然后替换str_replace(**"default_class_here"**,**"new_li_class_here"**,$consult_menu);| Note: $consult_menu
SO网友:RPB1001

正如上一张海报所提到的,您可以通过菜单添加自己的类,并在屏幕选项中勾选CSS类。在walker中,您可以通过以下方式访问您在其中输入的内容:

$item_output .= \'<a\'. $attributes .\' class="\'. $item->classes[0].\'">\';
我甚至用它在菜单中添加了一些预先命名的图像-有点像薄片,但它可以工作。

<img src="theme/images/navigation/\'.$item->classes[0].\'" width="48" height="48">

结束

相关推荐

在wp_menus3中应用我自己的css类?

具有以下功能:class my_walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth, $args) { global $wp_query; $indent = ( $depth ) ? str_repeat(\"\\t\", $depth) : \'\';