Get menu item slug

时间:2013-01-16 作者:user1706680

我使用自定义菜单,我想得到菜单项slug。这可能吗?

// 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 = \'main-menu\';

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>\';

}

echo $menu_list;

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

3 个回复
SO网友:Abhineet Verma

你已经把身份证贴在身上了。所以您可以使用这个自定义函数来检索任何帖子的slug。

function get_the_slug( $id=null ){
    if( empty($id) ):
        global $post;
        if( empty($post) )
            return \'\'; // No global $post var available.
        $id = $post->ID;
    endif;

    $slug = basename( get_permalink($id) );
    return $slug;
}
作为回报,这将为您提供指定post的slug,您可以将其作为参数传递。默认情况下,它将为您提供当前的slug post项。

SO网友:Joe

你可以这样做:

$slug = sanitize_title( $menu_item->title );
然而,这并不是百分之百可靠的,因为——我认为——slug并不总是(或不一定)与标题相同。

SO网友:user1706680

可以用$menu_item->post_name;.

结束