Jakieś dokumenty dotyczące argumentu „items_wrap” wp_nav_menu?

42

Korzystam z menu wp_nav_menu i próbuję utworzyć niestandardowe dane wyjściowe dla rozwijanych poziomów podrzędnych. Natknąłem się na argument „items_wrap”, ale tak naprawdę niewiele jest informacji na temat tego, co to jest, jak to działa i jakie rzeczy można z tym zrobić.

Czym dokładnie jest% 1 $ s ” i „ % 2 $ s ”? (Czy ktoś może to wyjaśnić w kategoriach laika?)

RodeoRamsey
źródło

Odpowiedzi:

57

Parametr 'items_wrap'dla wp_nav_menu()domyślnych do:

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

Ten szablon jest analizowany z sprintf():

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

Ponumerowane zastępcze - %1$s, %2$s, %3$s- odnosić się do argumentów po pierwszym argument sprintf(). Znak procentu oznacza symbol zastępczy, numer pozycji i typ soznacza, że ​​należy go traktować jako ciąg znaków.
Nie zmieniaj typu, chyba że naprawdę wiesz, co robisz. :)

  • $wrap_idjest parametrem, 'menu_id'jeśli go masz, w przeciwnym razie jest 'menu-' . $menu->slug.
  • $wrap_classjest parametrem, 'menu_class'jeśli go masz, w przeciwnym razie jest pusty.
  • $items jest ciągiem wewnętrznej zawartości menu.

Powiedzmy, że nie potrzebujesz class. Po prostu pomiń drugi ciąg:

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

Jeśli nie potrzebujesz classi idpotrzebujesz innego kontenera (ponieważ użyłeś niestandardowego chodzika ):

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

Chodzi przede wszystkim o to: Musisz użyć liczb do podanych zamienników wp_nav_menu(). %3$sjest zawsze listą przedmiotów.

fuxia
źródło
Dzięki za próbę wyjaśnienia. W pewnym sensie to widzę, ale to nie działa dla mnie. Chcę dodać powiedz klasę do moich przedmiotów li. Wygląda na to, że używasz ul dla każdego przedmiotu? Nie widzę też sprintf w moim kodzie, więc nie jest jasne.
wylądował
1
@landed To jest dla całego menu , a nie dla każdego elementu. Skorzystaj z naszej wyszukiwarki, mamy istniejące rozwiązania Twojego problemu.
fuxia
Szukałem w Internecie, a inni mieli ten sam problem, którego potrzebowałem, aby rozszerzyć klasę walkera i dodać tam mój HTML, to działało dla mnie dobrze, ale musiałem skopiować sporo kodu ze starej klasy, zmienić jego nazwę i zmienić go, a następnie ustawić menu, aby użyć mojej niestandardowej klasy walker. Dzięki
wylądowałem
Być może jestem trochę spóźniony na imprezę, ale jeśli chcesz wprowadzić tekst, items_wrapjak byś to zrobił?
henrywright
@henrywright Przetłumacz najpierw wartości, przekaż je do łańcucha.
fuxia
0

z tego, co zbieram, pobiera dane wyjściowe i nadaje li identyfikator i klasę z nazwą menu. Więc kiedy chcesz stylizować określone menu, łapiesz jego identyfikator i / lub klasę, jeśli chcesz je stylizować. 1 i 2 to po prostu inny wynik.

xLRDxREVENGEx
źródło