Hinzufügen einer Kategorie-ID oder eines Slugs zum WP Nav-Menü


8

Ist es möglich, die ID oder den Slug einer Kategorie in die Ausgabe der Menüs von wp_nav_menu einzufügen?

Die Standardausgabe von wp_nav_menu lautet beispielsweise:

<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>

Ich frage mich, ob es möglich ist, der CSS-Klasse dafür den Kategorie-Slug hinzuzufügen <li>, wie folgt :

<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>

wo hinzufügen? Könnten Sie näher auf die gewünschten Ergebnisse eingehen?
Milo

Antworten:


13

Verwenden Sie den nav_menu_css_classFilter, um Klassen zur wp_nav_menuAusgabe hinzuzufügen .

ID hinzufügen (keine zusätzliche Abfrage erforderlich):

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 hinzufügen (lädt Kategorieobjekt über 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 );

4
Ich hatte das gleiche Problem, aber ich brauchte den Slug meiner Seite. Dieser Thread hat mir sehr geholfen. Hier ist die Lösung:function my_special_nav_class( $classes, $item ) { if( 'page' == $item->object ){ $page = get_post( $item->object_id ); $classes[] = $page->post_name; } return $classes; } add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
Honk31

Der Unterschied zwischen $item->IDund $item->object_idist hier entscheidend. Gute Antwort!
squarecandy

Um die zusätzliche Abfrage zu verhindern, können Sie sanitize_title($item->title)anstelle der Kategorie slug
benedikt den
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.