我创建了一个菜单,叫做“主菜单”,只想向登录的用户显示它。我只能找到允许我显示/隐藏单个菜单项的插件,但不能找到整个菜单。我该怎么做?
Hide Menu Unless Logged In
1 个回复
SO网友:Tony Djukic
假设您能够在调用菜单的文件(可能是header.php)中编辑主题或子主题,请使用以下内容:
<?php
if( is_user_logged_in() ) :
wp_nav_menu( array(
\'theme_location\' => \'header-nav\',
\'menu_id\' => \'header-menu\',
) );
endif;
?>
这将是首选选项,因为它根本不会加载导航,所以即使是足够精明的人查看源代码/开发人员控制台也不会看到它。如果您无法编辑主题/子主题文件,则可以使用CSS进行编辑:
#site-navigation {
display:none;
}
body.logged-in #site-navigation{
display:block;
}
注意,上面的CSS解决了<nav>
标记对于我最近开始构建的站点,您必须查看源代码/开发人员控制台,并确定要添加的元素/容器display:none;
到重要的是WordPress添加了.logged-in
类设置为body标记,特别是允许我们根据登录的用户编写不同的CSS/js规则/函数。但是,正如我所说,如果您所追求的是阻止未登录的用户使用菜单查找项目,那么CSS不是首选选项-为此,您希望在顶部使用条件检查。
Addendum我还应该添加您可以添加的else
并加载其他菜单或登录链接。。。
<?php
if( is_user_logged_in() ) :
wp_nav_menu( array(
\'theme_location\' => \'header-nav\',
\'menu_id\' => \'header-menu\',
) );
else :
wp_nav_menu( array(
\'theme_location\' => \'header-nav-notloggedin\',
\'menu_id\' => \'header-menu-notloggedin\',
) );
endif;
?>