我正在尝试从wordpress管理面板创建菜单项。
为此,我遵循了codex的说明:http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items
// Get the nav menu based on $menu_name (same as \'theme_location\' or \'menu\' arg to wp_nav_menu)
// This code based on wp_nav_menu\'s code to get Menu ID from menu slug
$menu_name = \'custom_menu_slug\';
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 = \'<ul id="menu-\' . $menu_name . \'">\';
foreach ( (array) $menu_items as $key => $menu_item ) {
$title = $menu_item->title;
$url = $menu_item->url;
$menu_list .= \'<li><a href="\' . $url . \'">\' . $title . \'</a></li>\';
}
$menu_list .= \'</ul>\';
} else {
$menu_list = \'<ul><li>Menu "\' . $menu_name . \'" not defined.</li></ul>\';
}
// $menu_list now ready to output
echo $menu_list;
但我总是得到错误:菜单“cs-1-language”未定义。
我尝试了名称、slug和不同的菜单,但我总是发现这个错误。
是否有人知道我做错了什么,或者是否有其他方法列出菜单项?
谢谢
SO网友:Przemek Maczewski
我尝试了名称、slug和不同的菜单,但我总是发现这个错误。
你试过定位弹吗?看看菜单位置的定义位置(functions.php),例如:
register_nav_menus( array(
\'primary\' => __( \'Primary Menu\', \'mytheme\' ),
) );
在“外观->菜单”中,将菜单指定给该位置。
然后运行代码,从以下内容开始:
$menu_name = \'primary\';
SO网友:Serg10
谢谢你的帮助
你试过定位弹吗?看看菜单位置是在哪里定义的(functions.php)
是的,我用这个函数将菜单名转换为slug,但结果相同。。。
function wp_menu_id_by_name( $name ) {
$menus = get_terms( \'nav_menu\' );
foreach ( $menus as $menu ) {
if( $name === $menu->name ) {
return $menu->slug;
}
}
return false;
}
我在菜单面板(外观->菜单)中创建了菜单,而不是在函数中。php
我尝试在函数中创建。php,但不显示菜单面板中的菜单:(
SO网友:rank
下面是获取菜单项的另一种方法。
如果您在wordpress后端编辑菜单,如果您悬停“删除菜单”链接,您将在url中看到菜单的id。您可以通过id获取菜单:
<?php
$menuID = \'12\'; // ID of your menu
$primaryNav = wp_get_nav_menu_items($menuID); // get your menu items
?>
因此,您可以获得菜单中的所有项目。然后,您可以使用以下内容循环它们:
<ul>
<?php
foreach( $primaryNav as $item ) {
$link = $item->url; // get the url of item
$title = $item->title; // get title of item
?>
<li class="item"><a href="<?php echo $link; ?>"><?php echo $title; ?></a></li>
<?php } ?>
</ul>