it-swarm.com.de

Abrufen einer Liste von Menüelementen in einem Array

Ich arbeite derzeit an einem benutzerdefinierten Thema. In diesem Thema habe ich ein Menü, das ich mit register-nav-menu registriert habe, und dann zeige ich das Menü mit der Funktion wp_nav_menu auf meiner Webseite an.

Ich möchte jedoch nur die Liste der Menüelemente abrufen (die tatsächlichen Namen der Menüelemente, die im Bereich wp-admin zum Erstellen des Menüs verwendet wurden, und ohne HTML-Code) und diese Liste der Elemente in einem Array speichern (dh nicht anzeigen).

Ein Pseudocode würde also so aussehen

$menu_items = get_list_of_items($name_of_menu); // $name_of_menu is the result of register-nav-menu, and get_list_of_items is the psuedo function
foreach ($menu_items as $item) {
    // do something with the item
}

Gibt es eine Möglichkeit, dies zu tun? Vielen Dank.

11
Greeso

wp_get_nav_menu_items scheint genau das zu sein, was Sie benötigen. Es gibt ein Array von Menüobjekten zurück.

7
vancoder

Wie @vancoder erwähnt, ist wp_get_nav_menu_items() der richtige Weg, jedoch denke ich, dass eine detailliertere Antwort für die Menschen in Zukunft hilfreicher wäre.

Diese Funktion gibt ein Array von WP_Post Object-Objekten zurück (so dass Sie mit einem Pfeil auf die Werte zugreifen können, z. B. $item->title).

Für ein basic setup können Sie Folgendes verwenden:

$menuLocations = get_nav_menu_locations(); // Get our nav locations (set in our theme, usually functions.php)
                                           // This returns an array of menu locations ([LOCATION_NAME] = MENU_ID);

$menuID = $menuLocations['primary']; // Get the *primary* menu ID

$primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location.

Dann können Sie diese $primaryNav-Variable einfach durchlaufen, zum Beispiel:

foreach ( $primaryNav as $navItem ) {

    echo '<li><a href="'.$navItem->url.'" title="'.$navItem->title.'">'.$navItem->title.'</a></li>';

}
36
Brad Adams