Conditional custom menu?

时间:2011-10-04 作者:Mike Kennedy

我正在尝试创建一个显示<li></li> 当用户登录时,不显示它。到目前为止我有这个,但它不起作用。有人知道如何正确地做到这一点吗?

add_filter(\'wp_nav_menu_items\',\'custom_nav_items\',1,2);
function custom_nav_items($menu, $args) {
global $bp;
$args = (array)$args;
if ( $args[\'theme_location\'] != \'primary\' )
    return $menu;
$customNav = \'<li class="menu-item menu-item-type-post_type menu-item-object-page ss-nav-menu-item-5 ss-nav-menu-item-depth-0 ss-nav-menu-reg ss-nav-menu-mega-alignRight customNav"><a href="\'. $bp->loggedin_user->domain .\'">\'. $bp->loggedin_user->fullname .\'</a>
<ul class="sub-menu sub-menu-1">
    <li class="menu-item menu-item-type-custom menu-item-object-custom ss-nav-menu-item-depth-1"><a href="\'. $bp->loggedin_user->domain .\'">View Profile</a></li>
    <li class="menu-item menu-item-type-custom menu-item-object-custom ss-nav-menu-item-depth-1"><a href="\'. $bp->loggedin_user->domain .\'profile/edit/">Edit Profile</a></li>
    <li class="menu-item menu-item-type-custom menu-item-object-custom ss-nav-menu-item-depth-1"><a href="\'. $bp->loggedin_user->domain .\'settings/">Edit Settings</a></li>\'
if ( is_user_logged_in() ) {
    \'<li class="menu-item menu-item-type-custom menu-item-object-custom ss-nav-menu-item-depth-1"><a href="\'. wp_logout_url( bp_get_root_domain() ) .\'">Logout</a></li>\' }
\'<ul>
</li>\';
return $menu.$customNav;
}

2 个回复
SO网友:jessica

我不相信这需要插件。

您可以将类添加到菜单项中(编辑菜单项时,启用屏幕选项下的类字段)。还要确保您拥有body_class() 应用于body标签的函数。然后您可以执行以下操作:

.your-menu-item-class {
    display: none;
}
.logged-in .your-menu-item-class {
    display: block;
}

SO网友:Jamie

有一个插件可用于http://wpsmith.net/my-plugins/wp-custom-menu-filter-plugin/ 具有您正在寻找的功能。

将类添加到菜单项中,以指示它们是针对登录用户还是针对未知用户。

结束

相关推荐

如何让我的自定义帖子类型出现在NAV-menus.php‘Menu’中?

我的自定义帖子类型有点问题。我可以在我的主题中很好地创建它们,但我无法让它们显示在“菜单”屏幕中。。。至少在默认情况下不是这样。我曾尝试在代码中添加菜单和UI标志(见下文),但没有成功。有趣的是,当我启用自定义帖子类型UI插件时,自定义帖子类型在“菜单”屏幕中显示良好(有时)。这似乎向我暗示,我在某个地方遗漏了一个步骤,而且不知何故,自定义帖子类型UI插件设置了该标志,并允许我的自定义帖子类型和分类显示在导航菜单中。php“菜单”屏幕。编辑::以上位已回答。谢谢你,米洛。我应该在“屏幕选项”选项卡中打开它