2016-07-05 69 views
1

我救了我的菜單名稱爲「main_nav」,我試圖得到它的所有項目:

$menu_name = 'main_nav'; 
$locations = get_nav_menu_locations(); 

var_dump($locations[$menu_name]); // NULL 

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_list = '<nav>' ."\n"; 
    $menu_list .= "\t\t\t\t". '<ul>' ."\n"; 
    foreach ((array) $menu_items as $key => $menu_item) { 
     $title = $menu_item->title; 
     $url = $menu_item->url; 
     $menu_list .= "\t\t\t\t\t". '<li><a href="'. $url .'">'. $title .'</a></li>' ."\n"; 
    } 
} 

,但我得到了null$locations[$menu_name]。任何想法我錯過了什麼?

+1

你用'var_dump($ locations)'得到了什麼? ..「($ locations = get_nav_menu_locations())'是非常瘋狂的條件,因爲你把它分配給2行以上(並且你錯過了一個'=') – moped

+0

我從別處拷貝了它,但我想它是一個錯誤的代碼。我應該通過它的菜單名稱是'主',而不是'main_nav',我將其設置在管理區域中。那很奇怪! – laukok

+1

以及代碼實際上很好,如果你刪除第二行。在'if'條件下,它會嘗試將函數的輸出放到$ locations中,所以如果它不成功,它會返回false - 跳過條件,如果返回true/values,你會檢查'$ locations [$ menu_name]設置.. – moped

回答

1

由於$menu_name嘗試在您的functions.php文件中應用register_nav_menus函數中使用的密鑰。

相關問題