Menu Item Location

时间:2016-06-03 作者:işte bu

我找到了在菜单上显示通知栏的代码,并对其进行了一些自定义。它正在工作并显示在主菜单(主菜单)和页脚菜单(次菜单)上,但我只想显示主菜单。如何做到这一点?以下是我所拥有的:

function my_counter_nav_menu( $menu ) {  
    $notif_url   = bp_core_get_user_domain( bp_loggedin_user_id() ) . \'notifications/\';
    $friends_url = bp_core_get_user_domain( bp_loggedin_user_id() ) . \'friends/\'; 
    $msg_url     = bp_core_get_user_domain( bp_loggedin_user_id() ) . \'messages/\';    

    if ( ! is_user_logged_in() ) {
        return $menu;
    } else {
        $notif = \'<li><a href=" \' . $notif_url . \' "> <i class="fa fa-bell-o" aria-hidden="true"></i> Notifications [\' . bp_notifications_get_unread_notification_count( bp_loggedin_user_id() ) . \']</a></li>\';
    }

    $menu = $menu . $notif;

    return $menu;
}
add_filter( \'wp_nav_menu_items\', \'my_counter_nav_menu\' );

2 个回复
SO网友:Howdy_McGee

这个wp_nav_menu_items 过滤器有一个通过的辅助参数:$args. 我们需要做的是设置过滤器,通过传递优先级来接受第二个参数10 和参数的数量2:

add_filter( \'wp_nav_menu_items\', \'my_counter_nav_menu\', 10, 2 );
现在,我们正在传递args-如果我们仔细观察它所包含的内容,就会看到以下对象:

stdClass Object
(
    [menu] => Menu Name
    [container] => nav
    [container_class] => 
    [container_id] => mainNav
    [menu_class] => menu
    [menu_id] => 
    [echo] => 1
    [fallback_cb] => wp_page_menu
    [before] => 
    [after] => 
    [link_before] => 
    [link_after] => 
    [items_wrap] => <ul id="%1$s" class="%2$s">%3$s</ul>
    [depth] => 0
    [walker] => 
    [theme_location] => 
)
因此,如果我们想在您的函数中使用,我们可以针对$args->menu$args->theme_location:

if( \'Menu Name\' === $args->menu ) {
    /* .. Run Code Here .. */
}
或针对位置:

if( \'primary-menu\' === $args->theme_location ) {
    /* .. Run Code Here .. */
}

SO网友:işte bu

您好,谢谢您的回答,但我不知道我是否应该定义一个stdclass对象,如[菜单]=>菜单名或[主题位置]=>菜单名。如果是这样,是否有必要更改您键入的[菜单]=>菜单名的菜单名您可以给我发送孔顺序代码吗?

相关推荐

无法将设置添加到“NAV_MENUS”定制器面板

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?// add custom options to the Customizer function nssra_customizer_options($wp_customize) { // add \"menu primary flex\" checkb