Thêm ID danh mục hoặc sên vào Menu WP Nav


8

Có thể thêm id hoặc slug của một danh mục trong đầu ra của menu wp_nav_menu không?

Ví dụ: đầu ra tiêu chuẩn của wp_nav_menu là:

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

Tôi tự hỏi nếu có thể thêm slug danh mục vào lớp css cho điều đó <li>, như vậy:

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

thêm vào đâu? bạn có thể giải thích về kết quả mong muốn là gì?
Milo

Câu trả lời:


13

Sử dụng nav_menu_css_classbộ lọc để thêm các lớp vào wp_nav_menuđầu ra.

Thêm ID (không cần truy vấn bổ sung):

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

Thêm slug (tải đối tượng thể loại qua 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
tôi có cùng một vấn đề, nhưng tôi cần sên trang của tôi. Chủ đề này đã giúp tôi rất nhiều. đây là giải pháp: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

Sự khác biệt giữa $item->ID$item->object_idlà chìa khóa ở đây. Câu trả lời tốt đẹp!
squarecandy

để ngăn truy vấn bổ sung, bạn có thể sử dụng sanitize_title($item->title)thay vì lấy sên danh mục
benedikt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.