为什么我为$ 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]
。任何想法我错过了什么?
答
由于$menu_name
尝试在您的functions.php文件中应用register_nav_menus
函数中使用的密钥。
你用'var_dump($ locations)'得到了什么? ..“($ locations = get_nav_menu_locations())'是非常疯狂的条件,因为你把它分配给2行以上(并且你错过了一个'=') – moped
我从别处拷贝了它,但我想它是一个错误的代码。我应该通过它的菜单名称是'主',而不是'main_nav',我将其设置在管理区域中。那很奇怪! – laukok
以及代码实际上很好,如果你删除第二行。在'if'条件下,它会尝试将函数的输出放到$ locations中,所以如果它不成功,它会返回false - 跳过条件,如果返回true/values,你会检查'$ locations [$ menu_name]设置.. – moped