Qualche documentazione per l'argomento "items_wrap" di wp_nav_menu?


42

Sto usando wp_nav_menu e sto cercando di creare un output personalizzato per i menu a discesa del livello secondario. Mi sono imbattuto nell'argomento "items_wrap" ma in realtà non ci sono molte informazioni su ciò che è, come funziona e che tipo di cose si possono fare con esso.

Che cosa esattamente è " % 1 $ s " e " % 2 $ s "? (Qualcuno può spiegarlo in parole povere?)

Risposte:


57

Il parametro 'items_wrap'per wp_nav_menu()impostazione predefinita è:

'<ul id="%1$s" class="%2$s">%3$s</ul>' 

Questo modello aa che viene analizzato con sprintf():

$nav_menu .= sprintf( 
    $args->items_wrap
,   esc_attr( $wrap_id )    // %1$s
,   esc_attr( $wrap_class ) // %2$s
,   $items                  // %3$s
);

I segnaposto numerati - %1$s, %2$s, %3$s- si riferiscono agli argomenti dopo il primo argomento in sprintf(). Il segno di percentuale indica un segnaposto, il numero, la posizione e il tipo sindicano che deve essere trattato come una stringa.
Non modificare il tipo a meno che tu non sappia davvero cosa fai. :)

  • $wrap_idè il parametro 'menu_id'se lo hai impostato, altrimenti lo è 'menu-' . $menu->slug.
  • $wrap_classè il parametro 'menu_class'se lo hai impostato, altrimenti è vuoto.
  • $items è una stringa del contenuto interno del menu.

Diciamo che non è necessario un class. Ometti la seconda stringa:

wp_nav_menu( array( 'items_wrap' => '<ul id="%1$s">%3$s</ul>' ) );

Se non hai bisogno di classe ide vuoi un altro contenitore (perché hai usato un walker personalizzato ):

wp_nav_menu( array( 'items_wrap' => '<div>%3$s</div>' ) );

Il punto principale è: devi usare i numeri per i ricambi indicati wp_nav_menu(). %3$sè sempre l'elenco degli articoli.


Grazie per aver cercato di spiegare. Lo vedo, ma per me non sta funzionando. Voglio aggiungere una lezione ai miei articoli li. Sembra che tu stia usando ul per ogni articolo? Non vedo alcuno sprint nel mio codice, quindi non è chiaro.
sbarcò il

1
@landed Questo è per l' intero menu , non per ogni elemento. Si prega di utilizzare la nostra ricerca, abbiamo soluzioni esistenti per il tuo problema.
fuxia

Ho cercato sul web e altri hanno avuto lo stesso problema di cui avevo bisogno per estendere la classe walker e aggiungere il mio HTML lì funzionava bene per me, ma ho dovuto copiare un sacco di codice dalla vecchia classe e rinominarlo e cambiarlo, quindi impostare il menu per utilizzare la mia classe walker personalizzata. Grazie
sbarcato il

Potrei essere un po 'in ritardo alla festa, ma se tu volessi presentare del testo a items_wrapcome lo faresti?
henrywright,

@henrywright Traduci prima i valori, poi passali alla stringa.
fuxia

0

da quello che raccolgo prende un output e dà al li un ID e classe con il nome del menu. Quindi, quando vuoi dare uno stile ad un menu particolare, prendi il suo id e la sua classe se vuoi modellarlo. 1 e 2 è solo un output diverso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.