問題描述
我正在使用 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。