用WordPress建设网站,需要没有登录的用户和已经登录的用户显示不同的菜单。 例如:A没有登录看到的菜单分类是1,2,3,4,5,B是已经登录了的会员,看到的菜单内容为3,4,5,6,7. 这个如何实现呢?WordPress里面有没有相应的插件? 目前还没有找到相关的插件可以使用,但是可以使用代码来实现这个功能。 …

WordPress建设网站,需要没有登录的用户和已经登录的用户显示不同的菜单。

例如:A没有登录看到的菜单分类是1,2,3,4,5,B是已经登录了的会员,看到的菜单内容为3,4,5,6,7.

这个如何实现呢?WordPress里面有没有相应的插件?

目前还没有找到相关的插件可以使用,但是可以使用代码来实现这个功能。

今天我给大家分享代码的方式来实现这个功能。

代码实现

首先,将以下代码复制到你当前使用主题函数模板functions.php中:

if( is_user_logged_in() ) { 
 $args['menu'] = 'logged-in';
} else { 
 $args['menu'] = 'logged-out';
} 
 return $args;
}
add_filter( 'wp_nav_menu_args', 'wpc_wp_nav_menu_args' );

然后在后台分别建立 logged-inlogged-out 的菜单。

WordPress 登录与非登录用户 显示不同菜单

这两个菜单可以排列不一样,也可以把里面的分类做的不一样。

主题携带多个菜单的解决办法

如果你使用的主题本身就有多个菜单,你也可以使用下面的代码在指定的菜单位置显示。(这里还是控制在logged-inlogged-out)这两个提前设置的菜单。

function wpc_wp_nav_menu_args( $args = '' ) {
if( is_user_logged_in()) { 
 if( 'top-navigation' == $args['theme_location'] ) { // 将top-navigation更改为特定于主题的名称
 $args['menu'] = 'logged-in';
 }
} else { 
 if( 'top-navigation' == $args['theme_location'] ) { // 将top-navigation更改为特定于主题的名称
 $args['menu'] = 'logged-out';
 }
}
 return $args;
}
add_filter( 'wp_nav_menu_args', 'wpc_wp_nav_menu_args' );

通过以上可以修改为特定主题的导航。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。