มีเอกสารสำหรับอาร์กิวเมนต์“ items_wrap” ของ wp_nav_menu หรือไม่


41

ฉันใช้wp_nav_menuและกำลังพยายามสร้างเอาต์พุตที่กำหนดเองสำหรับดรอปดาวน์ระดับย่อย ฉันเจอข้อโต้แย้ง "items_wrap" แต่มีข้อมูลไม่มากนักว่ามันทำงานอย่างไรและมีสิ่งใดบ้างที่สามารถทำได้

ว่าอะไรคือ " % 1 $ s " และ " % 2 $ s "? (ใครสามารถอธิบายได้ในแง่ของคนธรรมดา?)

คำตอบ:


56

พารามิเตอร์'items_wrap'สำหรับwp_nav_menu()ค่าเริ่มต้นเป็น:

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

เทมเพลต aa นี้ที่แยกวิเคราะห์ด้วยsprintf():

$nav_menu .= sprintf( 
    $args->items_wrap
,   esc_attr( $wrap_id )    // %1$s
,   esc_attr( $wrap_class ) // %2$s
,   $items                  // %3$s
);

ตัวยึดตำแหน่งเลข - %1$s, %2$s, %3$s- หมายถึงการขัดแย้งหลังจากsprintf()อาร์กิวเมนต์แรกใน เครื่องหมายเปอร์เซ็นต์เป็นตัวยึดตำแหน่งจำนวนตำแหน่งและประเภทsหมายความว่าควรถือว่าเป็นสตริง
อย่าเปลี่ยนประเภทเว้นแต่คุณจะรู้จริงๆว่าคุณทำอะไร :)

  • $wrap_idเป็นพารามิเตอร์ถ้าคุณมีมันตั้งค่าอื่นมันคือ'menu_id''menu-' . $menu->slug
  • $wrap_classเป็นพารามิเตอร์'menu_class'หากคุณตั้งค่าไว้มิฉะนั้นจะว่างเปล่า
  • $items เป็นสตริงของเนื้อหาภายในของเมนู

classสมมติว่าคุณไม่จำเป็นต้องมี เพียงละเว้นสตริงที่สอง:

wp_nav_menu( array( 'items_wrap' => '<ul id="%1$s">%3$s</ul>' ) );

หากคุณไม่ต้องการclassและidและคุณต้องการภาชนะอื่น (เพราะคุณใช้วอล์คเกอร์ที่กำหนดเอง ):

wp_nav_menu( array( 'items_wrap' => '<div>%3$s</div>' ) );

wp_nav_menu()จุดหลักคือคุณต้องใช้ตัวเลขสำหรับการเปลี่ยนที่กำหนดใน %3$sเป็นรายการของรายการเสมอ


ขอบคุณที่พยายามอธิบาย ฉันเห็นมัน แต่มันก็ไม่ได้ผลสำหรับฉัน ฉันต้องการเพิ่มพูดในชั้นเรียนให้กับรายการ li ของฉัน คุณดูเหมือนจะใช้ ul สำหรับแต่ละรายการ? ฉันไม่เห็น sprintf ใด ๆ ในรหัสของฉันดังนั้นจึงไม่ชัดเจน
ลงจอด

1
@landed นี่สำหรับเมนูทั้งหมดไม่ใช่สำหรับแต่ละรายการ โปรดใช้การค้นหาของเราเรามีวิธีแก้ไขปัญหาของคุณอยู่แล้ว
fuxia

ฉันค้นหาเว็บและคนอื่น ๆ มีปัญหาเดียวกันกับที่ฉันต้องการเพื่อขยายคลาสวอล์คเกอร์และเพิ่ม html ของฉันที่นี่ทำงานได้ดีสำหรับฉัน แต่ฉันต้องคัดลอกโค้ดจำนวนมากจากคลาสเก่าและเปลี่ยนชื่อแล้วเปลี่ยนมันจากนั้นตั้งค่า เมนูเพื่อใช้คลาสวอล์คเกอร์ที่กำหนดเองของฉัน ขอบคุณ
ลงจอด

ฉันอาจจะสายไปงานเลี้ยง แต่ถ้าคุณต้องการที่จะแนะนำข้อความที่items_wrapคุณจะ i18n มันได้อย่างไร
henrywright

@ Henrywright แปลค่าก่อนส่งผ่านไปยังสตริง
fuxia

0

จากสิ่งที่ฉันรวบรวมมันเอาท์พุทและให้ li id ​​และคลาสด้วยชื่อเมนู ดังนั้นเมื่อคุณต้องการสไตล์เมนูเฉพาะคุณคว้า id และหรือคลาสถ้าคุณต้องการสไตล์ 1 และ 2 เป็นเพียงเอาต์พุตที่แตกต่างกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.