J'utilise wp_nav_menu et j'essaie de créer une sortie personnalisée pour les menus déroulants de sous-niveau. Je suis tombé sur l'argument "items_wrap" mais il n'y a vraiment pas beaucoup d'informations sur ce que c'est, comment ça marche et sur le genre de choses qu'on peut en faire.
Qu'est-ce exactement est "% 1 $ s " et "% 2 $ s "? (Quelqu'un peut-il l'expliquer en termes simples?)
Le paramètre 'items_wrap'
pour wp_nav_menu()
est par défaut:
'<ul id="%1$s" class="%2$s">%3$s</ul>'
Ceci est un template qui est analysé avec sprintf()
:
$nav_menu .= sprintf(
$args->items_wrap
, esc_attr( $wrap_id ) // %1$s
, esc_attr( $wrap_class ) // %2$s
, $items // %3$s
);
Les espaces réservés numérotés - %1$s
, %2$s
, %3$s
- font référence aux arguments after le premier argument de sprintf()
. Le signe de pourcentage marque un espace réservé, le nombre de la position et le type s
signifie qu'il doit être traité comme une chaîne.
Ne changez pas le type sauf si vous savez vraiment ce que vous faites. :)
$wrap_id
est le paramètre 'menu_id'
si vous l'avez défini, sinon c'est 'menu-' . $menu->slug
.$wrap_class
est le paramètre 'menu_class'
si vous l'avez défini, sinon il est vide.$items
est une chaîne du contenu interne du menu.Disons que vous n’avez pas besoin de class
. Oubliez simplement la deuxième chaîne:
wp_nav_menu( array( 'items_wrap' => '<ul id="%1$s">%3$s</ul>' ) );
Si vous n'avez pas besoin de class
et de id
et que vous voulez un autre conteneur (car vous avez utilisé un custom walker ):
wp_nav_menu( array( 'items_wrap' => '<div>%3$s</div>' ) );
Le point principal est: Vous devez utiliser les nombres pour les remplacements donnés dans wp_nav_menu()
. %3$s
est toujours la liste des éléments.
d'après ce que je comprends, il saisit une sortie et donne au li un identifiant et une classe avec le nom du menu. Ainsi, lorsque vous souhaitez attribuer un style à un menu particulier, vous devez saisir son identifiant et/ou votre classe si vous souhaitez le personnaliser. le 1 et 2 est juste une sortie différente.