为什么我为$ locations [$ menu_name]获取null?

问题描述:

我救了我的菜单名称为“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

由于$menu_name尝试在您的functions.php文件中应用register_nav_menus函数中使用的密钥。