1

WordPress实现登陆用户和未登陆用户显示不同菜单

 2 years ago
source link: https://www.huhexian.com/28570.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

WordPress实现登陆用户和未登陆用户显示不同菜单

2022-02-2409:36:46评论808字

目前大多数WordPress主题都支持在后台 - 外观 - 菜单中设置网站的菜单,而且可以创建多个菜单,给各个菜单单独设置菜单项。

WordPress实现登陆用户和未登陆用户显示不同菜单

目前有这样的需求:网站头部有一个导航菜单,想在这个位置给登录和未登录用户分别显示不同的菜单项,该如何实现呢?WordPress给我们提供了wp_nav_menu_args这个filter,可以在菜单显示之前更改wp_nav_menu函数的参数。具体我们可以这样实现:

1、创建两个菜单

先进入WordPress后台 - 外观 - 菜单中, 创建两个菜单,菜单名称分别设置成:已登录 和 未登录,并给这两个菜单分配不同的菜单项。

不懂设置的,可以参考视频教程:WordPress创建菜单

2、确定菜单位置名称

开始下一步前,我们需要知道菜单位置名称,也就是theme_location参数的值,用文本编辑器打开当前主题目录中的header.php,搜索wp_nav_menu一般都能找到这个值,代码一般长这样:

  1. // theme_location后面的 top 就是我们要找的值
  2. wp_nav_menu( array( 'theme_location' => 'top', 'menu_id' => 'top-menu') );

如果你实在不懂代码,具体可以看视频教程提供的简便方法:确定菜单位置名称

3、添加执行代码

最后,在当前主题的functions.php添加以下代码即可:

  1. function ludou_nav_menu_args($args = '') {
  2. // 下面的top改成第2步获取到的菜单位置名称
  3. if ($args['theme_location'] == 'top') {
  4. if (is_user_logged_in()) {
  5. $args['menu'] = '已登录';
  6. else {
  7. $args['menu'] = '未登录';
  8. return $args;
  9. add_filter('wp_nav_menu_args', 'ludou_nav_menu_args');

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK