当前位置: 首页 > news >正文

网站登录到wordpress计算机培训班培训费用

网站登录到wordpress,计算机培训班培训费用,平台搭建是什么,路桥做网站的公司在WordPress中让“未登录”和“已登录”用户看到不同的顶部菜单,最干净、最安全、最可维护的做法是: 在同一个菜单位置(themelocation)里,根据is_user_logged_in()动态切换菜单。 下面给出三种常见实现方式,按推荐程度排序。任选…

在WordPress中让“未登录”和“已登录”用户看到不同的顶部菜单,最干净、最安全、最可维护的做法是:

在同一个菜单位置(themelocation)里,根据is_user_logged_in()动态切换菜单。

下面给出三种常见实现方式,按推荐程度排序。任选其一即可,不要混用。

方案一:在主题或子主题里用filter切换(推荐)

为你的顶部菜单在主题里注册一个菜单位置(如果还没注册):

// functions.php
add_action( 'after_setup_theme', function () {register_nav_menus( ['primary' => __( '顶部菜单', 'your-textdomain' ),] );
} );

用wp_nav_menu_args过滤器在渲染前判断是否登录,并替换菜单:

// functions.php
add_filter( 'wp_nav_menu_args', function ( $args ) {// 只针对前端、只针对我们关心的菜单位置if ( ! is_admin() && 'primary' === $args['theme_location'] ) {// 未登录时显示哪个菜单$guest_menu = get_term_by( 'slug', 'guest-menu', 'nav_menu' ); // 也可以用 id// 已登录时显示哪个菜单$user_menu  = get_term_by( 'slug', 'user-menu',  'nav_menu' );if ( ! is_user_logged_in() && $guest_menu ) {$args['menu'] = $guest_menu->term_id;} elseif ( is_user_logged_in() && $user_menu ) {$args['menu'] = $user_menu->term_id;}}return $args;
} );

在后台“外观→菜单”里分别建好两个菜单,并记录它们的别名(slug)或ID,对应到上面的$guest_menu、$user_menu即可。

注意:这两个菜单都不要勾选任何菜单位置,完全由代码接管。

模板里照常调用:

wp_nav_menu( [ 'theme_location' => 'primary' ] );

优点

不依赖插件,逻辑集中,可版本控制。

菜单本身仍由WordPress管理,客户日后改菜单不用改代码。

方案二:用同一个菜单+条件标签隐藏/显示条目

如果你两个菜单80%都一样,只是个别条目不同,可以只建一个菜单,然后:

在“外观→菜单”给需要隐藏的条目加CSS类:

未登录条目加hide-logged-in,已登录条目加hide-logged-out。

在主题额外输出一段CSS:

add_action( 'wp_head', function () {if ( is_user_logged_in() ) {echo '<style>.hide-logged-in{display:none!important}</style>';} else {echo '<style>.hide-logged-out{display:none!important}</style>';}
} );

优点:只有一个菜单,维护简单。

缺点:条目其实仍在HTML里,只是display:none,安全性/SEO略差。

方案三:用插件(不想写代码时)

“ConditionalMenus”

“UserMenus”

安装后可在菜单位置里给不同角色/登录状态指派不同菜单。

缺点:多一个插件,代码控制权低。

常见坑

缓存插件/全页缓存

如果站点启用了全页缓存(WPSuperCache、WPRocket、CloudflareAPO等),需要把登录cookie设为不缓存或者缓存分用户组,否则访客会相互看到对方的菜单。

WPRocket:开启“为登录用户单独缓存”。

Cloudflare:用BypassCacheonCookie规则匹配wordpress_logged_in_*。

使用了页面构建器(Elementor、Bricks等)

这些构建器往往用自己的Nav组件,需要在其设置里找“Visibility”或“DisplayCondition”,把上述条件标签is_user_logged_in()填进去即可。

一句话总结

最推荐方案一:注册一个菜单位置,用wp_nav_menu_args过滤器根据is_user_logged_in()把$args[‘menu’]换成不同的菜单ID。

原文

http://www.dulizhan.bj.cn/wordpress/239.html

http://www.dtcms.com/a/440278.html

相关文章:

  • 山西省住房和建设厅网站首页表格制作方法
  • 一些js特效的网站推荐现成的ppt大全
  • 数字货币网站开发需求网站设计 seo
  • 网站运营报告个人急售二手房
  • 罗定网站建设商业中心 网站建设
  • dw建网站具体步骤网站开发 百度云
  • 企业网站建设费运维难还是开发难
  • 中国建设银行网站会员注册免费空间领取网站
  • 设置个网站要多少钱搜狗站长平台
  • 有没有找项目的网站视觉传达设计专业
  • 专业做网站上海delphi 做直播网站
  • 栖霞建设招标网站网站开发相关书籍
  • 集约化网站群建设内容如何进入google网站
  • 朝阳区网站建设君和网站做代练
  • 苏州网站建设规划wap建站模板
  • 大安移动网站建设义乌网络优化
  • 成都专门做公司网站的公司做一张网页需要多少钱
  • 自己网站建设wordpress.备份
  • 怎么做律师事务所的网站wordpress免费汽车配件企业主题
  • 模态信息论中布尔格的基础作用
  • 一般网站 广告知名品牌营销策略
  • 国内单页面网站wordpress企业免费主题下载地址
  • 快速做网站联系电话简述网站的创建流程
  • 详解开发到生产环境以及灰度发布
  • 网站建设名头制作一个静态网站源码
  • 网站建设架构选型网站开发者选项
  • 影视自助建站官网国际上比较认可的邮箱
  • 微服务架构:构建可伸缩、高效的现代应用!
  • 网站开发的目的和意义赣州vi设计公司
  • 滨州做网站公司wordpress速度快了很多