Cara menentukan secara manual halaman aktif saat ini dengan wp_nav_menu ()

9

Apakah ada cara untuk menentukan secara manual halaman mana yang "aktif" saat digunakan wp_nav_menu()?

Saya memiliki halaman "Produk", dan pada halaman itu saya memiliki tautan ke berbagai taksonomi ubahsuaian (dinamis). Ketika saya mengklik salah satu taksonomi ini, saya tetap di halaman "Produk" tetapi wp_nav_menu()kehilangan referensi karena saya masih di halaman "Produk". Apakah ada cara saya bisa memperbaikinya?

Terima kasih!

Jon

Jon
sumber

Jawaban:

12

Jika Anda hanya ingin menambahkan current_page_itemkelas ke satu item menu, Anda bisa menghubungkan ke nav_menu_css_classfilter, dan menambahkan kelas itu jika perlu. Disebut ketika menu dicetak .

Jika Anda ingin akses ke seluruh menu dan menambahkan kelas, kaitkan ke wp_get_nav_menu_itemsfilter, di mana Anda mendapatkan seluruh $itemsarray. Anda dapat mengedit classesproperti masing-masing item.

Jan Fabry
sumber
2

@ Jon Selama Anda menggunakan <body <?php body_class(); ?>>WordPress akan menetapkan kelas current_page_itemuntuk menu Anda bersama dengan current_page_parentjika Anda menggunakan menu drop down.

Chris_O
sumber
1
Hai Chris, Terima kasih atas jawabannya. Saya menggunakan <body <? Php body_class (); Tag >> >> tetapi masalahnya adalah sejauh wp_nav_menu () terkait dengan taksonomi yang saya klik tidak terkait dengan itu! Jadi, saya perlu mengatakan kepada wp_nav_menu () - jika halaman tersebut X maka tunjukkan "Produk" sebagai current_page_parent.
Jon
0

Jan menyebutkan filter nav_menu_css_class, jadi saya mencarinya dan contoh ini sangat membantu saya Sumber: 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 );
Ross
sumber