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>
Squrler
quelle
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 );
Milo
quelle
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