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;