问题描述
我正在使用 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。