問題描述
我正在使用 wp_nav_menu,並嘗試為 sub-level 下拉菜單創建自定義輸出。我遇到了”items_wrap” 的觀點,但是關於它是什麼,它的工作原理以及可以做什麼樣的事情真的沒有太多的信息。
“%1$s” 和”%2$s” 究竟是什麼? (任何人都可以用外行人的話解釋嗎?)
最佳解決方案
wp_nav_menu()的參數'items_wrap'默認為:
'<ul id="%1$s" class="%2$s">%3$s</ul>'
這是一個模板,解析為 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,並且您想要另一個容器 (因為您使用 custom walker):
wp_nav_menu( array( 'items_wrap' => '<div>%3$s</div>' ) );
要點是:您必須使用 wp_nav_menu()中給出的更換號。 %3$s 始終是項目列表。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。