human
J'utilise wp_nav_menu et j'essaie de créer une sortie personnalisée pour les sous-menus déroulants. J'ai trouvé l'argument "items_wrap" mais il n'y a vraiment pas beaucoup d'informations sur ce que c'est, comment ça fonctionne et ce qui peut être fait avec. Qu'est-ce que "%1$s" et "%2$s" exactement ? (Est-ce que quelqu'un peut l'expliquer en termes simples ?
gpt
Le paramètre ```'items_wrap'``` pour ```wp_nav_menu()``` est défini par défaut comme suit : 
```'%3$s'
```
C'est un modèle 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 après le premier argument dans ```sprintf()```. Le signe pourcentage indique un espace réservé, le nombre indique la position et le type ```s``` signifie qu'il doit être traité comme une chaîne de caractères.
Ne changez pas le type à moins de savoir 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 c'est vide.
* ```$items``` est une chaîne de caractères correspondant au contenu interne du menu.

Disons que vous n'avez pas besoin d'une ```class```. Il suffit d'omettre la deuxième chaîne :
```wp_nav_menu( array( 'items_wrap' => '%3$s' ) );
```
Si vous n'avez pas besoin de la ```class``` et de l'```id```, et que vous voulez un autre conteneur (parce que vous avez utilisé un marcheur personnalisé) :
```wp_nav_menu( array( 'items_wrap' => '%3$s' ) );
```
Le point principal est : Vous devez utiliser les numéros pour les remplacements donnés dans ```wp_nav_menu()```. ```%3$s``` est toujours la liste des éléments.