Eu estou usando wp_nav_menu e estou tentando criar saída personalizada para as listas suspensas de subnível. Eu me deparei com o argumento "items_wrap", mas não há muita informação sobre o que é, como funciona e que tipo de coisas podem ser feitas com ele.
O que exatamente é "% 1 $ s " e "% 2 $ s "? (Alguém pode explicar isso em termos leigos?)
O parâmetro 'items_wrap'
para wp_nav_menu()
é padronizado para:
'<ul id="%1$s" class="%2$s">%3$s</ul>'
Isto é um template que é analisado com sprintf()
:
$nav_menu .= sprintf(
$args->items_wrap
, esc_attr( $wrap_id ) // %1$s
, esc_attr( $wrap_class ) // %2$s
, $items // %3$s
);
Os placeholders numerados - %1$s
, %2$s
, %3$s
- referem-se aos argumentos after o primeiro argumento em sprintf()
. O sinal de porcentagem marca um espaço reservado, o número da posição e o tipo s
significa que ele deve ser tratado como uma string.
Não altere o tipo a menos que você realmente saiba o que faz. :)
$wrap_id
é o parâmetro 'menu_id'
se você tiver definido, senão é 'menu-' . $menu->slug
.$wrap_class
é o parâmetro 'menu_class'
se você tiver definido, senão está vazio.$items
é uma string do conteúdo interno do menu.Digamos que você não precisa de um class
. Apenas omita a segunda string:
wp_nav_menu( array( 'items_wrap' => '<ul id="%1$s">%3$s</ul>' ) );
Se você não precisa dos nomes class
e id
e deseja outro container (porque você usou um custom walker ):
wp_nav_menu( array( 'items_wrap' => '<div>%3$s</div>' ) );
O ponto principal é: você tem que usar os números para as substituições dadas em wp_nav_menu()
. %3$s
é sempre a lista de itens.
pelo que eu sei, ele pega uma saída e dá ao li um id e uma classe com o nome do menu. Então, quando você quer estilizar um menu em particular, você pega seu id e/ou classe se você quiser estilizá-lo. o 1 e 2 é apenas uma saída diferente.