Gibt es Dokumente für das Argument "items_wrap" von wp_nav_menu?


42

Ich verwende wp_nav_menu und versuche, eine benutzerdefinierte Ausgabe für die Dropdown- Listen auf untergeordneter Ebene zu erstellen. Ich bin auf das Argument "items_wrap" gestoßen, aber es gibt nicht wirklich viele Informationen darüber, was es ist, wie es funktioniert und was man damit machen kann.

Was genau ist " % 1 $ s " und " % 2 $ s "? (Kann es jemand in Laienbegriffen erklären?)

Antworten:


57

Der Parameter 'items_wrap'für den wp_nav_menu()Standardwert lautet:

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

Dies ist eine Vorlage , die analysiert wird mit sprintf():

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

Die nummerierten Platzhalter - %1$s, %2$s, %3$s- beziehen sich auf die Argumente nach dem ersten Argument sprintf(). Das Prozentzeichen markiert einen Platzhalter, die Zahl die Position und der Typ sbedeutet, dass es als Zeichenfolge behandelt werden soll.
Ändern Sie den Typ nur, wenn Sie wirklich wissen, was Sie tun. :)

  • $wrap_idist der Parameter, 'menu_id'wenn Sie ihn eingestellt haben, sonst ist es 'menu-' . $menu->slug.
  • $wrap_classist der Parameter, 'menu_class'wenn Sie ihn gesetzt haben, sonst ist er leer.
  • $items ist eine Zeichenfolge des inneren Inhalts des Menüs.

Nehmen wir an, Sie brauchen keine class. Lass einfach den zweiten String weg:

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

Wenn Sie das classund nicht benötigen idund einen anderen Container möchten (weil Sie einen benutzerdefinierten Gehwagen verwendet haben ):

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

Der Hauptpunkt ist: Sie müssen die Zahlen für die Ersetzungen in verwenden wp_nav_menu(). %3$sist immer die Liste der Elemente.


Danke, dass du versucht hast es zu erklären. Ich sehe es irgendwie, aber es funktioniert nicht für mich. Ich möchte meinen Li-Artikeln eine Klasse hinzufügen. Sie scheinen ul für jeden Artikel zu verwenden? Ich sehe auch keinen Sprint in meinem Code, es ist also nicht klar.
gelandet

1
@landed Dies gilt für das gesamte Menü , nicht für jeden Punkt. Bitte nutzen Sie unsere Suche, wir haben bereits Lösungen für Ihr Problem.
fuxia

Ich habe das Web durchsucht und andere hatten das gleiche Problem, das ich zum Erweitern der Walker-Klasse und Hinzufügen meines HTML-Codes benötigte. Dies funktionierte für mich in Ordnung, aber ich musste eine ganze Menge Code aus der alten Klasse kopieren und umbenennen und dann ändern das Menü, um meine benutzerdefinierte Walker-Klasse zu verwenden. Thanks
gelandet

Ich komme vielleicht ein bisschen zu spät zur Party, aber wenn du einen Text einführen wolltest, items_wrapwie würdest du das tun?
Henrywright

@henrywright Übersetzen Sie zuerst die Werte, und übergeben Sie sie an die Zeichenfolge.
Fuxia

0

von dem, was ich sammle, schnappt es sich eine Ausgabe und gibt dem li eine ID und eine Klasse mit dem Menünamen. Wenn Sie also ein bestimmtes Menü formatieren möchten, greifen Sie auf dessen ID und / oder Klasse zu, wenn Sie es formatieren möchten. die 1 und 2 ist nur eine andere Ausgabe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.