Adakah dokumen untuk argumen “items_wrap” wp_nav_menu?

42

Saya menggunakan wp_nav_menu dan saya mencoba membuat output khusus untuk drop-down sub-level. Saya menemukan argumen "items_wrap" tetapi sebenarnya tidak ada banyak informasi mengenai apa itu, bagaimana cara kerjanya, dan hal-hal seperti apa yang dapat dilakukan dengannya.

Apa sebenarnya adalah " % 1 $ s " dan " % 2 $ s "? (Adakah yang bisa menjelaskannya dengan istilah awam?)

RodeoRamsey
sumber

Jawaban:

57

Parameter 'items_wrap'untuk wp_nav_menu()default adalah:

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

Aa ini Template yang diurai dengan sprintf():

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

Placeholder bernomor - %1$s, %2$s, %3$s- mengacu pada argumen setelah argumen pertama di sprintf(). Tanda persen menandai pengganti, nomor posisi dan jenis sberarti itu harus diperlakukan sebagai string.
Jangan mengubah jenis kecuali Anda benar-benar tahu apa yang Anda lakukan. :)

  • $wrap_idadalah parameter 'menu_id'jika Anda menetapkannya, selain itu 'menu-' . $menu->slug.
  • $wrap_classadalah parameter 'menu_class'jika Anda menetapkannya, kalau tidak itu kosong.
  • $items adalah string konten bagian dalam menu.

Katakanlah Anda tidak perlu class. Hapus saja string kedua:

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

Jika Anda tidak membutuhkan classdan id, dan Anda menginginkan wadah lain (karena Anda menggunakan alat bantu jalan khusus ):

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

Poin utamanya adalah: Anda harus menggunakan angka untuk penggantian yang diberikan wp_nav_menu(). %3$sselalu daftar item.

fuxia
sumber
Terima kasih telah mencoba menjelaskan. Saya agak melihatnya tetapi tidak berhasil untuk saya. Saya ingin menambahkan kelas katakan pada item li saya. Anda tampaknya menggunakan ul untuk setiap item? Saya juga tidak melihat sprintf dalam kode saya jadi tidak jelas.
mendarat
1
@ Negeri Ini untuk seluruh menu , bukan untuk setiap item. Silakan gunakan pencarian kami, kami memiliki solusi untuk masalah Anda.
fuxia
Saya melakukan pencarian di web dan orang lain memiliki masalah yang sama yang saya butuhkan untuk memperpanjang kelas walker dan menambahkan html saya di sana ini bekerja ok untuk saya, tetapi saya harus menyalin cukup banyak kode dari kelas lama dan mengganti nama dan mengubahnya lalu mengubahnya kemudian mengatur menu untuk menggunakan kelas custom walker saya. Terima kasih
mendarat
Saya mungkin agak terlambat ke pesta, tetapi jika Anda ingin memperkenalkan teks items_wrapbagaimana Anda melihatnya?
henrywright
@henrywright Terjemahkan nilainya terlebih dahulu, teruskan ke string.
fuxia
0

dari apa yang saya kumpulkan itu mengambil output dan memberikan li id ​​dan kelas dengan nama menu. Jadi ketika Anda ingin mendesain menu tertentu, Anda mengambil id dan atau kelasnya jika Anda ingin mengaturnya. 1 dan 2 hanyalah keluaran yang berbeda.

xLRDxREVENGEx
sumber