向WP导航菜单添加类别ID或Slug

时间:2013-03-19 作者:Squrler

是否可以在wp\\U nav\\U菜单的输出中添加类别的id或slug?

例如,wp\\U nav\\U菜单的标准输出为:

<div class="menu-header">
    <ul id="menu-categorieen" class="menu">
        <li id="menu-item-4353" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-4353"><a href="http://domain/">Home</a></li>
        <li id="menu-item-1034" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1034"><a href="http://domain/category/category_1/">Category 1</a></li>
        <li id="menu-item-1039" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1039"><a href="http://domain/category/category_2/">Category 2</a></li>
        <li id="menu-item-1032" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1032"><a href="http://domain/category/category_3/">Category 3</a></li>
    </ul>
</div>
我想知道是否有可能将类别slug添加到css类中<li>, 像这样:

<div class="menu-header">
    <ul id="menu-categorieen" class="menu">
        <li id="menu-item-4353" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-4353"><a href="http://domain/">Home</a></li>
        <li id="menu-item-1034" class="menu-category-1 menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1034"><a href="http://domain/category/category_1/">Category 1</a></li>
        <li id="menu-item-1039" class="menu-category-2 menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1039"><a href="http://domain/category/category_2/">Category 2</a></li>
        <li id="menu-item-1032" class="menu-category-3 menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1032"><a href="http://domain/category/category_3/">Category 3</a></li>
    </ul>
</div>

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

使用nav_menu_css_class 要将类添加到的筛选器wp_nav_menu 输出

添加ID(无需其他查询):

function wpa_category_nav_class( $classes, $item ){
    if( \'category\' == $item->object ){
        $classes[] = \'menu-category-\' . $item->object_id;
    }
    return $classes;
}
add_filter( \'nav_menu_css_class\', \'wpa_category_nav_class\', 10, 2 );
添加slug(通过加载类别对象get_category):

function wpa_category_nav_class( $classes, $item ){
    if( \'category\' == $item->object ){
        $category = get_category( $item->object_id );
        $classes[] = \'menu-\' . $category->slug;
    }
    return $classes;
}
add_filter( \'nav_menu_css_class\', \'wpa_category_nav_class\', 10, 2 );

结束

相关推荐

WooCommerce dynamic menus

我有一个基本的WordPress网站,设置了Suffusion主题和WooCommerce插件。这在大多数情况下都很有效,但是当我让人们点击/悬停在“Shop”菜单图标上时,我希望它能够动态地下拉我定义的产品类别。我如何做到这一点?我肯定有关于这个主题的文档,但我不确定要查找什么。我主要是一名系统管理员。