如何在WordPress中向登录的用户显示不同的菜单

你想在WordPress中向登录的用户显示不同的菜单吗?

默认情况下,WordPress允许你在你的主题中的特定位置显示相同的导航菜单。但是,如果你想在你的网站上向登录的用户显示不同的菜单呢?

在这篇文章中,我们将告诉你如何在WordPress中轻松地向登录的用户显示不同的菜单。

为什么在WordPress中向登录的用户显示不同的菜单?

根据你的访客和他们的活动来改变你的WordPress网站的不同区域,使你的网站对每个用户都有个性化的感觉。

这种个性化的内容有助于你提高你的WordPress网站的用户体验。

现在,如果你经营的网站的用户不需要注册或登录,那么你可能可以在你的网站上使用相同的导航菜单。

然而,其他网站可能会从向登录用户显示自定义菜单中大大受益。

例如,像在线商店、WordPress会员网站社区或在线学习平台等网站,都可以从个性化的导航菜单中受益。

为登录用户提供的个性化导航菜单可以帮助他们更容易找到他们注册的东西。

例如,一个在线商店的用户可以管理他们的账户,或者一个付费社区的成员可以很容易地更新他们的订阅或查看他们购买的在线课程。

在默认情况下,WordPress确实允许你创建你想要的许多导航菜单。然而,你只能选择在你的WordPress主题的特定位置显示一个菜单。

既然如此,让我们来看看如何轻松地改变这种行为,在WordPress中向登录的用户显示不同的菜单。

  1. 使用插件在WordPress中向登录的用户显示不同的菜单
  2. 在WordPress中使用代码手动选择登录的菜单

在WordPress中为已登录和未登录的用户创建菜单

无论你使用哪种方法,你首先需要创建你想显示给登录用户和非登录用户的两个导航菜单。

只需前往WordPress仪表板中的 “外观” Menus页面。如果你已经有一个导航菜单,你在你的网站上为所有用户使用,那么这可以是你的默认菜单。

mainmenu

之后,点击 “创建一个新菜单 “链接,为你的登录用户创建一个新的自定义菜单。

在这里你可以添加你想显示给注册或登录用户的菜单项目。例如,你可能想在你的菜单中添加一个注销链接。

在屏幕的左侧,你可以看到你的网站页面的列表。只需勾选任何你想添加到你的菜单的页面旁边的方框,然后点击 “添加到菜单 “按钮。

loggedin-menu

你也可以拖放屏幕右侧的菜单项目来重新排列它们。

再往下看,你可以选择一个位置来显示你的菜单。但是,你现在不需要给这个菜单指定一个位置。我们将在文章的后面做这件事。

不要忘记点击 “保存菜单 “按钮来存储你的变化。

方法1. 使用插件向WordPress中的登录用户显示不同的菜单

这个方法比较简单,推荐给所有的WordPress用户。

首先,你需要安装并激活 “Conditional Menus “插件。

激活后,你需要访问外观 ” 菜单页面,并切换到 “管理位置 “标签。

从这里,你会看到在你的WordPress主题中定义的可用菜单位置列表,以及当前显示的菜单。

manage-menu-loctions-1

例如,它显示我们的主菜单位置正在显示一个名为 “Main Menu “的导航菜单。

现在,我们需要告诉该插件,当某个条件被满足时,显示一个不同的菜单。

要做到这一点,请点击 “+Conditional Menu “链接,然后从下拉菜单中选择你想显示给登录用户的导航菜单。

select-conditional-menu

接下来,你需要点击 “+Conditions “链接。

这将带来一个弹出窗口,你会看到一堆条件可供选择。

loggedin-user

只需勾选 “User logged in “选项旁边的方框,然后点击保存按钮。

现在你可以访问你的网站,看到登录后的用户菜单在运行。你也可以注销你的WordPress管理员,查看将显示给所有其他用户的导航菜单。
different-menu-login-users

方法2. 用代码手动选择WordPress中的登录菜单

这个方法需要你在你的WordPress网站上添加代码。首先,你需要在主题文件functions.php添加以下代码

function my_wp_nav_menu_args( $args = '' ) {
if( is_user_logged_in() ) {
// Logged in menu to display
$args['menu'] = 43;
 
} else {
// Non-logged-in menu to display
$args['menu'] = 35;
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );

请确保用你之前创建的导航菜单的ID替换43和35。

你可以在菜单页面上选择一个导航菜单的ID,找到它。你会在浏览器的地址栏中看到菜单的ID号。
find-menu-id