Cách chỉ định thủ công trang hoạt động hiện tại với wp_nav_menu ()


9

Có cách nào để chỉ định thủ công trang nào hiện đang "hoạt động" khi sử dụng wp_nav_menu()không?

Tôi có trang "Sản phẩm" và trên trang đó tôi có các liên kết đến các nguyên tắc phân loại tùy chỉnh (động) khác nhau. Khi tôi nhấp vào một trong những phân loại này, tôi ở lại trang "Sản phẩm" nhưng wp_nav_menu()mất tham chiếu đến thực tế là tôi vẫn ở trang "Sản phẩm". Có cách nào tôi có thể khắc phục điều này?

Cảm ơn!

Jon

Câu trả lời:


12

Nếu bạn chỉ muốn thêm current_page_itemlớp vào một mục menu, bạn có thể nối với nav_menu_css_classbộ lọc và thêm lớp đó nếu cần. Nó được gọi khi menu được in .

Nếu bạn muốn truy cập vào toàn bộ menu và thêm các lớp, hãy nối vào wp_get_nav_menu_itemsbộ lọc, nơi bạn có được toàn bộ $itemsmảng. Bạn có thể chỉnh sửa các classesthuộc tính của các mục riêng lẻ.


2

@Jon Miễn là bạn đang sử dụng <body <?php body_class(); ?>>WordPress sẽ chỉ định lớp current_page_itemcho menu của bạn cùng với current_page_parentnếu bạn sử dụng menu thả xuống.


1
Xin chào Chris, Cảm ơn bạn đã trả lời. Tôi đang sử dụng <body <? Php body_group (); ? >> tag nhưng vấn đề là theo như wp_nav_menu () có liên quan đến các nguyên tắc phân loại mà tôi nhấp vào không liên quan đến nó! Vì vậy, tôi cần nói với wp_nav_menu () - nếu trang là X thì hiển thị "Sản phẩm" là current_page_parent.
Jon

0

Jan đã đề cập đến bộ lọc nav_menu_css_group, vì vậy tôi đã tra cứu nó và ví dụ này rất hữu ích cho tôi Nguồn: https://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_ class

function my_special_nav_class( $classes, $item ) {
    if ( is_single() && $item->title == 'Blog' ) {
        $classes[] = 'special-class';
    }
    return $classes;
}    
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
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.