Get menu items problem

时间:2015-02-23 作者:Serg10

我正在尝试从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和不同的菜单,但我总是发现这个错误。

是否有人知道我做错了什么,或者是否有其他方法列出菜单项?

谢谢

3 个回复
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>

结束

相关推荐

注册_NAV_MENUS,然后以编程方式创建菜单

我有一个register_nav_menus 调用我的主题函数。php://register nav menu and footer nav. register_nav_menus( array( \'main-nav\' => \'Main Navigation\', \'footer-nav\' => \'Footer Navigation\' ) ); 这很好,但我想采取额外的步