ลบ div การตัดและ ul ออกจากเอาต์พุตของ wp_nav_menu


17

ฉันใช้ระบบเมนูใหม่ของ Wordpress และนี่คือผลลัพธ์ของ wp_nav_menu ()

    <div class="menu-main-menu-container">
   <ul id="menu-main-menu" class="menu">
   <li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-item page_item page-item-21 current_page_item menu-item-28"><a href="http://www.bemang.com/">Trang nhà</a></li>
    <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-29"><a href="http://www.bemang.com/blog/">Blog</a></li>
    <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-30"><a href="http://www.bemang.com/gioi-thieu/">Giới thiệu</a></li>
    </ul>
   </div>

สิ่งที่ฉันต้องการเพียงแค่นี้:

<li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-item page_item page-item-21 current_page_item menu-item-28"><a href="http://www.bemang.com/">Trang nhà</a></li>
   <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-29"><a href="http://www.bemang.com/blog/">Blog</a></li>
   <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-30"><a href="http://www.bemang.com/gioi-thieu/">Giới thiệu</a></li>

ไม่ฉันกำลังตัด div หรือ ul ฉันพยายามใช้ Google ไปหลายวิธี แต่ไม่มีผลลัพธ์ :(

คำตอบ:


28

div การห่อเป็นเรื่องง่าย เมื่อคุณใช้wp_nav_menu()เพิ่มอาร์กิวเมนต์นี้:'container' => false

สำหรับองค์ประกอบที่มีข้อโต้แย้งที่เรียกว่า<ul> 'items_wrap'ดูคำตอบของ woodchuckyสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนั้น (และโหวตขึ้น!)


ขอบคุณมาก ๆ ! มันใช้งานได้แล้ว ฉันไม่คุ้นเคยกับ PHP และไม่รู้ว่าฉันต้องใส่ add_filter ไปที่ functions.php

1
ที่ยังไม่ได้อธิบายวิธีการลบ div ซึ่ง wraps up wrap_class อธิบายไว้ข้างต้น อาร์กิวเมนต์คอนเทนเนอร์ที่ตั้งค่าเป็นเท็จไม่ทำงาน
sergio

2
ถ้าอาร์กิวเมนต์ไม่ทำงานนั่นหมายความว่าคุณไม่ได้ใช้container wp_nav_menuคุณอาจกำลังเรียกใช้ fallback cb ซึ่งเป็นค่าเริ่มต้นwp_page_menu()โดยไม่สามารถระบุเมนูหรือตำแหน่งเมนูด้วยเมนูที่กำหนด
John P Bloch

30

wp_nav_menu() ยอมรับพารามิเตอร์ที่ไม่มีเอกสาร

'items_wrap' => ' <ul id="%1$s" class="%2$s">%3$s</ul>'

สิ่งนี้ดำเนินการโดย: $nav_menu .= sprintf( $args->items_wrap, esc_attr( $wrap_id ), esc_attr( $wrap_class ), $items );

คุณสามารถเล่นกับอาร์กิวเมนต์ sprintf

ตัวอย่าง: 'items_wrap' => '% 3 $ s' จะลบ<ul>แท็กการตัดออก


เฮ้เจ๋ง! และยินดีต้อนรับสู่ WPSE @woodchucky!
fuxia

5

สำหรับการแสดงผลเฉพาะของ li ให้เพิ่มสิ่งนี้ในอาร์เรย์

'container'      => '',
'items_wrap'    => '%3$s',

2

'container' => falseล้มเหลวสำหรับฉันเพราะฉันระบุสิ่งที่ไม่มีอยู่'theme_location'และ'menu'และมันทำงานได้ทันทีที่ฉันแก้ไขสิ่งนี้

โซลูชันจาก: wordpress.org/support


0

หากต้องการกรอง div การตัดให้ทำดังนี้

add_filter('wp_nav_menu_args', 'prefix_nav_menu_args');
function prefix_nav_menu_args($args = ''){
    $args['container'] = false;
    return $args;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.