2012-03-14 59 views
6

所有, 菜單值我用下面的代碼來獲得所創建的所有定義的WordPress的菜單:獲得來自WordPress的

$menus = wp_get_nav_menus(); 

我知道我要使用的菜單的ID。根據菜單ID,我希望根據選定的菜單ID獲取該菜單中的頁面和相應的導航標籤。我該怎麼做呢?

我卻發現這樣的:

在那個例子中的$選項[「menu_choice」]是選擇菜單的ID,但我真的想是給永久價值。我能從中得到這個嗎?

感謝您提前提供任何幫助!

$menu_items = wp_get_nav_menu_items($options['menu_choice']); 
foreach ((array) $menu_items as $key => $menu_item) { 
    $title = $menu_item->title; 
    $url = $menu_item->url; 
} 
+1

您是否知道有一個專用於Wordpress的StackExchange站點? http://wordpress.stackexchange.com – 2012-03-15 10:17:39

+0

檢查此答案http://stackoverflow.com/a/37959604/1153703 – 2016-06-22 05:54:05

回答

2

要使用wp_get_nav_menu_items()函數訪問每個項目的標題和URL在菜單?爲什麼不使用更簡單的函數,wp_nav_menu,並傳遞你想要的菜單ID的參數?只需在下一個示例中將menu_id替換爲$ menu_ID:

<?php 
$menu_args = array('menu' => $menu_ID); 
wp_nav_menu($menu_args); 
?> 
2

要顯示一個特定的菜單:

+0

$ menu_ID ='195'; $ menu_args = array('menu'=> $ menu_ID); wp_nav_menu($ menu_args); – 2017-05-26 07:13:26

7

這正是您想要的。

$menu_name = 'menu-id'; //e.g. primary-menu; $options['menu_choice'] in your case 

if (($locations = get_nav_menu_locations()) && isset($locations[$menu_name])) { 
    $menu = wp_get_nav_menu_object($locations[$menu_name]); 
    $menu_items = wp_get_nav_menu_items($menu->term_id); 
} 

現在$ menu_items是一個對象,它包含所有菜單項的所有數據。因此,您可以使用foreach循環檢索必要的數據。

foreach ($menu_items as $menu_item) { 
    $id = $menu_item->ID; 
    $title = $menu_item->title; 
    $url = $menu_item->url; 

    if ($parent_id = $menu_item->menu_item_parent) { 
     //the element has a parent with id $parent_id, so you can build a hierarchically menu tree 
    } 
    else { 
     //the element doesn't have a parent 
    } 
} 

你可以找到這個問題更有趣的信息,如排序依據選項,官方網站:http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items

1

爲了得到這個職位,ID,那麼你將不得不使用這種功能,它拉:

$ id = get_post_meta($ menu_item-> ID,'_menu_item_object_id',true);

否則,該id將是wordpress用於菜單的nav_menu自定義類型帖子。 同樣的$ url url,你可以使用get_permalink($ id)來調用它;

0
<pre> 
$menu_ID = '195'; // 195 is a menu id this id you can see 
http://example.com/wp-admin/nav-menus.php?action=edit&menu=195 
$menu_args = array('menu' => $menu_ID); 
wp_nav_menu($menu_args); 
</pre>