Ich erstelle einen benutzerdefinierten Walker für mein Navigationsmenü. Das Ziel ist es, das Menü in folgende Spalten aufzuteilen:
Ich kann leicht feststellen, wo ich in der Liste bin, indem ich auf schaue $item->menu_order
. Was ich nicht weiß ist, wie viele Elemente in der Menüsumme enthalten sind.
Wie kann ich das im Inneren des Gehgeräts herausfinden?
Aktualisiert:
Mir ist klar, dass es mehrere andere Möglichkeiten gibt, Spalten zu erstellen. Alle haben jedoch ihre Nachteile:
CSS Floats. Wie unten von @sagive vorgeschlagen, kann dies durch Verschieben aller Listenelemente erreicht werden. Das Problem ist, dass die Liste die Reihenfolge ändert. Anstatt die erste Spalte zu durchlaufen und dann zur zweiten zu wechseln, würde die Liste alle vier Spalten in der ersten Zeile und dann alle vier Spalten in der zweiten Zeile durchlaufen. Dies bringt die Bestellung durcheinander.
CSS-Spalten. Dies ist fast die perfekte Lösung. Es wird mir genau das geben, was ich will - außer dass der IE es überhaupt nicht tut. Sogar auf IE 9. Das macht es für eine Mainstream-Website unbrauchbar.
jQuery. Mit etwas clientseitigem Javascript könnte ich die Liste hacken und das Layout so gestalten, wie ich es möchte. Das ist allerdings chaotisch und bricht für Leute, die js deaktiviert haben.
PHP. Dies ist die Methode, nach der ich in dieser Frage frage. Ich teile die Liste in vier separate ungeordnete Listen auf, speichere jede in HTML aus und verwende dann CSS, um die Listen zu schweben und vier verschiedene Spalten zu erstellen. Es mag schwierig sein, in PHP zu produzieren, aber das Ergebnis sieht für alle Browser gleich aus. Das macht es zur besten Option, glaube ich.
Lösung:
Für diejenigen, die folgen können, ist hier der Code, den ich endlich verwendet habe, um die Antwort zu erhalten:
// The menu handle from the register_nav_menu statement in functions.php
$theme_location = 'my-menu-handle';
$theme_locations = get_nav_menu_locations();
$menu_obj = get_term( $theme_locations[$theme_location], 'nav_menu' );
// Echo count of items in menu
echo $menu_obj->count;
Warum nicht einfach die Funktion array_chunk () verwenden ?
Angenommen, Sie haben ein Array fertiger
<li>
Tags erstellt, könnte Ihr Code zum Teilen und Anzeigen folgendermaßen aussehen:quelle
Ich weiß, dass Sie bereits eine Lösung gefunden haben und nicht wissen, ob Sie genau danach suchen, aber ich habe vor einiger Zeit ein Plugin geschrieben, das auf der Website eines Kunden verwendet werden kann, und es erstellt Klassen für jedes Menü, Untermenü und Menüelement . Es heißt Erweiterte Navigationsmenüs. Wenn Sie es am Ende verwenden, können Sie mir gerne Funktionsanfragen senden.
quelle
Denken Sie nicht (und entschuldigen Sie, wenn ich unhöflich bin), dass es viel einfacher und einfacher ist
, einfach zu schweben: links; alle "li" und setzen sie in ein div mit dieser
Struktur als Bild hinterlegt?
Beispiel:
Ich denke, das wäre viel einfacher zu implementieren - aber ich weiß, dass nicht genau das, was dir nach einer harten, neuen Sichtweise manchmal hilft :)
quelle