วิธีระบุหน้าปัจจุบันที่ใช้งานอยู่ด้วยตนเองด้วย wp_nav_menu ()


9

มีวิธีการระบุด้วยตนเองที่หน้าปัจจุบัน "ใช้งาน" เมื่อใช้wp_nav_menu()?

ฉันมีหน้า "ผลิตภัณฑ์" และในหน้านั้นฉันมีลิงก์ไปยัง taxonomies แบบกำหนดเอง (ไดนามิก) ต่างๆ เมื่อฉันคลิกที่หนึ่งใน taxonomies เหล่านี้ฉันจะอยู่ที่หน้า "ผลิตภัณฑ์" แต่ไม่มีwp_nav_menu()การอ้างอิงถึงข้อเท็จจริงที่ว่าฉันยังอยู่ในหน้า "ผลิตภัณฑ์" มีวิธีที่ฉันสามารถแก้ไขได้หรือไม่

ขอบคุณ!

จอน

คำตอบ:


12

หากคุณต้องการเพิ่มcurrent_page_itemคลาสลงในรายการเมนูเดียวคุณสามารถขอเพิ่มnav_menu_css_classตัวกรองและเพิ่มคลาสนั้นหากจำเป็น มันถูกเรียกว่าเมื่อเมนูพิมพ์

หากคุณต้องการเข้าถึงเมนูทั้งหมดและเพิ่มคลาสให้เชื่อมต่อกับwp_get_nav_menu_itemsตัวกรองซึ่งคุณจะได้รับ$itemsอาร์เรย์ทั้งหมด คุณสามารถแก้ไขclassesคุณสมบัติของแต่ละรายการ


2

@ จอน ตราบใดที่คุณใช้<body <?php body_class(); ?>>WordPress จะกำหนดคลาสcurrent_page_itemให้กับเมนูของคุณพร้อมกับcurrent_page_parentหากคุณใช้เมนูแบบเลื่อนลง


1
สวัสดีคริสขอบคุณสำหรับการตอบกลับ ฉันใช้ <body <? php body_class (); ? >> แท็ก แต่ปัญหาคือว่าเท่าที่ wp_nav_menu () เกี่ยวข้องกับ taxonomies ที่ฉันคลิกที่ไม่เกี่ยวข้อง! ดังนั้นฉันต้องพูดกับ wp_nav_menu () - ถ้าหน้าเป็น X จากนั้นแสดง "ผลิตภัณฑ์" เป็น current_page_parent
Jon

0

ม.ค. พูดถึงตัวกรอง nav_menu_css_class ดังนั้นฉันจึงค้นหาและตัวอย่างนี้มีประโยชน์กับฉันที่มา: 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 );
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.