如果wp_NAV_MENU($args)回溯某些内容,如何显示条件内容

时间:2013-03-30 作者:Abs

我有一个侧边栏,显示当前页面的子链接(使用此solotuinhttps://wordpress.stackexchange.com/a/2809/27414) 这非常有效。

如果有子链接显示在侧栏,我想给它一个标题,如“也是这个部分”。

我尝试了以下方法,但没有成功:

if (wp_nav_menu( $args )){
    echo "Also in this section";
}
谢谢

1 个回复
SO网友:Tom J Nowell

使用has_nav_menu 检查位置是否已分配菜单

<?php
if ( has_nav_menu( $location ) ) {
     echo "Also in this section";
}
?>

http://codex.wordpress.org/Function_Reference/has_nav_menu

有关更高级的检查,您需要致电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
需要注意的一点是,导航菜单由导航菜单项组成,and these menu items are custom post types. 使用父子关联来确定深度,就像处理页面和帖子一样

结束