it-swarm-eu.dev

Načítání seznamu položek nabídky v poli

V současné době pracuji na vlastním motivu. V tomto tématu mám menu, které jsem zaregistroval pomocí register-nav-menu, a pak zobrazuji menu na mé webové stránce pomocí funkce wp_nav_menu.

Rád bych však načetl pouze seznam položek menu (pouze názvy položek menu, které byly použity v oblasti wp-admin pro vytvoření menu a bez jakéhokoliv html), a chtěl bych tento seznam položek uložit do pole (tj. nezobrazovat).

Takže kód psuedo by vypadal takto

$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
}

Existuje způsob, jak toho dosáhnout? Dík.

11
Greeso

wp_get_nav_menu_items zdá se, že je přesně to, co potřebujete. Vrátí pole objektů nabídky.

7
vancoder

Když se @vancoder zmiňuje, wp_get_nav_menu_items() je způsob, jak jít, ale myslím si, že lepší podrobná odpověď bude pro lidi v budoucnu užitečnější.

Uvedená funkce vrací pole objektů WP_Post Object (takže se k hodnotám dostanete pomocí šipky, např. $item->title).

Pro basic setup, můžete použít následující:

$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.

Pak můžete jen přeskočit proměnnou $primaryNav, například:

foreach ( $primaryNav as $navItem ) {

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

}
36
Brad Adams