贝斯克雷朋
重要注意事项
Nutzung公司
转到外观>菜单 将“显示模式”设置为“已登录用户”、“已注销用户”或“所有人”。默认设置为“每个人”。 如果您希望按角色自定义,请将“显示模式”设置为“登录用户”,并在“将菜单项限制为最小角色”下选中所需角色旁边的复选框。 请记住,角色并没有将项目严格限制为该角色,而是限制为每个具有该角色能力的人。 例如:设置为“Subscriber”的项目将被Subscribers看到 和 由管理员执行。 更多地将此视为查看项目所需的最低角色。
支持
屏幕截图
安装
上传 插件 文件夹到 /wp-content/插件/ 目录 Aktiviere das Plugin mittels dem“Plugins”-WordPress中的Menü 转到外观>菜单 相应地编辑菜单项。 首先选择是要将项目显示给Everyone、所有已注销用户还是所有已登录用户。 通过选中要限制可见性的角色旁边的复选框,登录用户可以进一步限制为特定角色。
常见问题解答
-
这可能是因为与另一个插件(或主题)冲突。 从WordPress 5.4开始 wp_nav菜单项自定义字段 钩子已添加到WordPress核心。 因此,导航菜单角色直接连接到此挂钩,而无需替换自定义的管理菜单查询器,其中可能只有一个。 如果Walker被一个主题/插件替换,并且核心钩子没有包含在内,那么导航菜单角色就不能添加它的字段。 已知冲突的完整列表: UberMenu 2.x Mega Menus插件(UberMenu3.x支持NMR!) 将后代添加为子菜单项插件 Navception插件 饱腹主题 Be主题 伊特门吕 木星主题 iMedica主题 Proxyler EVO主题 Mega主插件
-
解决方法#1 -
沙兹德 有一个天才的想法,不等待核心挂钩,只需自己添加挂钩。 如果所有插件和主题作者使用相同的钩子,我们可以让我们的插件一起玩。 在WordPress 5.4之前,我使用了这个想法,并将我的管理导航菜单Walker修改为 只有 添加以下行(就在描述输入之后): <? php程序 //将其放置在管理员导航菜单“Walker”中 do_action('wp_nav_menu_item_custom_fields',$item_id,$item,$depth,$args,$id); //末端添加段 ?> 从WordPress 5.4开始,我不再取代Walker,并建议其他插件和主题也这样做。 但对于那些仍然存在的,它们肯定需要包括now-core钩子。 请您冲突的插件/主题的作者将此代码添加到他们的插件或主题中,我们的插件将变得兼容。 -
修补插件/主题的说明 -
如果你想自己尝试这个补丁,你可以修改你冲突的插件/主题的管理菜单Walker类。 提醒:我不支持修复插件/主题。 如果您对以下说明不满意,请联系冲突插件/主题的开发人员! 1.找到扩展 步行者_导航_菜单 。最快的方法是搜索整个插件/主题文件夹 扩展Walker_Nav_Menu 。当您找到包含此文本的文件时,您将知道需要编辑哪个文件。 一旦你找到了,这节课的开头会是这样的: 类YOUR_THEME_CUSTOM_WALKER扩展了WALKER_Nav_Menu{} 2.找到 启动() 方法 在该文件中,您最终会看到一个类方法,它看起来像: 函数start_el(&$output,$item,$depth=0,$args=array(),$id=0){ //为了简洁起见,有些东西被截断了 } 3.在这个方法中的某个地方粘贴动作挂钩! 在导航菜单角色中,我将挂钩直接放在描述之后,如下所示: <p class=“field-description-description description-wide”> <label for=“edit-menu-item-description-<?php echo$item_id;?>”> <? php_e(“说明”);?>< br/> <textarea id=“edit-menu-item-description-<?php echo$item_id;?>”class=“widefat edit-menu-item-description”rows=“3”cols=“20”name=“menu-iitem-descrcription[<?php-echo$item_id;?>]”><? php echo esc_html($item->description);// 文本区域是否已跳过?></ 文本区域> <span class=“description”><? php_e(“如果当前主题支持,则说明将显示在菜单中。”);?></ span> </label> </p> <? php程序 //在start_el()方法的描述段落后面直接添加 do_action('wp_nav_menu_item_custom_fields',$item_id,$item,$depth,$args,$id); //末端添加段 ?> -
解决方法#2 -
作为解决方法,您可以切换到默认主题(或禁用冲突的插件),编辑每个菜单项的导航菜单角色,然后恢复到原始主题/重新启用冲突的插件。 导航菜单角色的前端功能仍然有效。 -
解决方法#3 -
仅适用于低于5.4的WordPress。 下载并安装此 微型插件 。需要显示NMR选项时激活它,编辑完成后禁用它。 -
我正在使用XYZ成员插件,但我看不到它的“级别”? -
显然有一些会员插件 不要 使用传统的WordPress角色/功能。 我的插件会列出任何以传统WordPress方式注册的角色。 如果你的会员插件正在使用其他系统,那么导航菜单角色将无法使用它。 从1.3.5开始,我添加了一个名为 导航菜单角色项可见性 就在我的代码决定是否显示/隐藏菜单项之前。 也总是有 导航菜单角色 过滤器,用于修改管理员中列出的角色。 在这两者之间,我相信你有足够的能力将导航菜单角色与任何成员插件集成在一起。 下面是一个示例,我添加了一个新的伪角色, 创造性地称为“新角色”。第一个功能将其添加到菜单项管理屏幕中。第二个功能非常通用,实际上不会做任何事情,因为您需要根据正在使用的插件提供自己的逻辑。导航菜单角色将保存新的“角色”信息,并将其添加到 $item->角色 变量。 -
现有兼容性插件 -
如果你的会员插件没有在这里列出,你可以使用上面的桥接插件作为模板。 向下滚动到主插件文件的底部,您将看到“Helper Functions”部分。如果您根据成员插件的逻辑修改3个包装器函数,则插件的其余部分应处理与导航菜单角色的集成。 -
添加新的“角色” -
NMR中的角色是可过滤的,与全局角色不同 $wp_角色 这允许在不使用核心角色来确定访问权限的插件之间添加兼容性,就像一些成员插件一样。 /** *将自定义角色添加到导航菜单角色菜单列表 *param:$roles所有可用角色的数组,默认为全局$wp_roles *返回:数组 */ 函数kia_new_roles($个角色){ $roles['new-role-key']='new-rule'; 返回$roles; } add_filter(“导航菜单角色”,“kia_new_roles”); 注意,如果你想添加WordPress功能,以上就是你所需要的。 因为导航菜单角色检查角色是否有权使用查看菜单项 current_user_can($role)不需要为 nav_menu_roles_item_visibility`过滤器。 万一你 做 需要根据一些非常定制的东西来检查您的可见性状态,下面是您的操作方法: /** *更改每个菜单项的可见性 *@param bool$可见 *@param obj$item完整的菜单对象。 导航菜单角色将其信息添加到以下键{ *roles-可能值:“in”(全部登录)|“out”(全部注销)|特定角色的数组,例如:[“administrator”,“editor”] *display_mode-可能值:“show”(条件满足时显示)|“hide”(条件符合时隐藏) *返回布尔值 */ 函数kia_item_visibility($visible,$item){ if(isset($item->roles)&&isarray($item->roles)&&inarray('new-role-key',$item->roles)){ /*if(//您自己对当前用户和“new-role”状态进行自定义检查){ $visible=真; }其他{ $visible=假; } */ } 返回$visible; } 添加过滤器('nav_menu_roles_item_visibility','kia_item_可见性',10,2); 请注意,您必须生成自己的if/then逻辑。 我无法免费支持与其他插件的自定义集成。 你可以 联系我 讨论雇用我,或者我建议使用支持WordPress角色的插件,比如Justin Tadlock的 成员 . -
按字母顺序对角色排序 -
将以下代码片段添加到主题中 函数.php 文件: /* *对NMR角色进行排序 *@param:$roles ID=>名称的所有可用角色的数组 *@return:array */ 函数kia_sort_roles($个角色){ if(is_admin()){ $array_lowercase=数组映射('strtolower',$roles); array_multi-SORT($array_slower、SORT_ASC、SORT_STRING、$roles); 返回$roles; } } add_filter(“导航菜单角色”,“kia_sort_roles”); -
如果菜单中的每个项目都配置为显示给登录用户(所有登录用户或按特定角色),则当注销的访问者访问您的站点时,菜单中没有要显示的项目。 wp_nav_menu() 然后会尝试检查它 回退cb 参数…默认为 wp_页面_菜单 . 因此,如果你没有要显示的项目,WordPress最终会显示你的所有页面!! 如果不希望这样,则必须将回退参数设置为空字符串。 wp_nav_menu(数组('theme_location'=>'primary-menu','fallback_cb'=>''); 您必须对的每个受影响的实例执行此操作 wp_nav_menu() 在主题模板中。 我不可能告诉你他们在哪里,但是 页眉 是主菜单的常见位置。 或者,您可以通过向子主题的 函数.php 文件或通过 代码段 插件: /** *禁用所有菜单的回退页菜单 * *@param array$args wp_nav_menu()参数的数组。 *@return数组 */ 函数kia_nav_menu_args($args){ $args['fallback_cb']=''; 返回$args; } 添加过滤器('wp_nav_menu_args','kia_nav_menu_args'); -
导航菜单角色插件存储1条帖子 元 每个菜单项/帖子。 默认的“导出”工具可以很好地导出它。 然而,Import插件只为菜单项导入特定的post元。 从1.3版开始,我在导航菜单角色中添加了一个自定义导入程序作为解决方案。 -
如何使用自定义导入程序? -
转到工具>导出,选择导出所有内容并下载导出文件 转到新站点上的“工具”>“导入”,执行正常的WordPress导入 返回工具>导入,这次选择导航菜单角色导入程序。 使用相同的.xml文件并执行第二次导入 不会创建重复的帖子,但会导入所有菜单帖子元(包括导航菜单角色信息)
-
是的,但要手动。 WPML开发人员告诉我,导航菜单项的元数据是 不 由WPML同步,这意味着复制到新语言中的菜单不会带来其自定义导航菜单角色设置。 但是,如果手动重新配置设置,新的语言菜单将按预期工作。
雷森西宁
Mitwirkende&Entwickler公司
干预Entwicklung?
阿尔·安德伦斯波托科尔
2.1.3
修复:RTL布局样式。
2.1.2
修复:打字。
2.1.1
修复:隐藏父菜单项的隐藏子菜单项的顶级显示。
2.1.0
新增:添加对按角色“隐藏”菜单项的支持。
2.0.2
修复:PHP致命错误:未捕获错误:调用未定义的方法WP_Customize_Manager::settings_previewed()。 settings_previewed()在WordPress 3.9.0+之前不存在。
2.0.1
调整:按字母顺序对角色名称进行排序。
2.0.0
新增:定制支持! 道具@westonruter!
1.10.2
修复:导航菜单类的严格数组类型转换。
1.10.1
修复:仅在前端自动应用类。 防止在每次保存时追加重复的类。
1.10.0
修正:我的钩子进了WP5.4的核心!! 终于可以停止覆盖管理菜单Walker了。
1.9.5
修复:PHP注意:未定义变量$item
1.9.4
将NMR角色作为css类添加到菜单输出中 通过使列表项全宽,改进菜单编辑器角色复选框列表UX。 道具@lkraav
1.9.3
访问前请检查所有对象属性是否存在。 解决自定义菜单项的PHP通知。
1.9.2
包括一个! empty()检查菜单$items 更新捐赠链接
1.9.1
更新捐赠链接 需要更新并根据版本进行测试
1.9.0
添加对多站点的支持。 道具@open dsi和@fiech。
1.8.5
WP4.7使用新Walker
1.8.4
当应排除自定义程序中编辑的导航菜单项时,阻止其呈现
1.8.3
删除不推荐使用的screen_icon()
1.8.2
减少传递给的参数数量 添加操作链接 滤波器
1.8.1
切换输入名称以使用计数器[nav-menu-role][100][1]。 由于某些原因,[nav-menu-role][100][]没有发布数组,而被炒作的名称[nav-menu-role][100][镀金]对保存例程造成了严重破坏。 不应影响任何不使用连字符角色名称的人。
1.8.0
修复WordPress 4.5中的样式问题
1.7.9
将walker的优先级恢复为默认值,因为主题实际上并没有使用钩子来添加自己的字段。 悲伤的脸。
1.7.8
删除所有管理通知
1.7.7
添加花哨的调试消息
1.7.6
调整CSS以最初隐藏新添加菜单项上的复选框(默认为“Everyone”,这样角色就不会出现)
1.7.5
更新Walker_Nav_Menu_Edit_Roles以模仿WordPress 4.4中的Walker_Nov_Menu
1.7.4
更改metabox中的语言,尝试解释最小大写与严格角色检查 继续调整常见问题
1.7.3
更新自述文件,更新错误通知,添加更多FAQ链接
1.7.2
添加意大利语。 道具@sododesign
1.7.1
更新了常见问题及冲突插件/主题的补丁说明 添加葡萄牙语。 道具@brunobaros
1.7.0
调整管理UI,使其更加用户友好。 现在的选项有:向所有人显示、向注销用户显示和向登录用户显示(可选地,按特定角色登录用户)
1.6.5
添加瓜哈拉蒂语。 道具@rohilmisty93
1.6.4
更多语言问题->同步svn+git版本号
1.6.3
请再次尝试添加语言。 他们都去哪里了?
1.6.2
添加法语翻译。 Philippe Gilles的道具
1.6.1
更新合并列表 如果没有角色,则不显示单选按钮–允许精细的权限控制
1.6.0
功能:隐藏父菜单项将自动隐藏其所有子菜单项 功能:添加与菜单项可见性控制插件和任何愿意通过 wp_nav菜单项自定义字段 挂钩。 请参阅 常见问题解答 使我们的插件兼容。
1.5.1
希望修复缺失的nav-menu-roles.min.js SVN问题
1.5.0
切换到插件实例 检测到冲突插件时添加通知 删除一些无关参数 借助@deskarrada添加西班牙语翻译
1.4.1
更新到Walker_Nav_Menu_Edit的WP 3.8版本(当然与3.7.1没有任何不同) 对管理菜单项进行小的CSS调整 对照WP 3.8检查
1.4
添加到常见问题解答 将JS风格添加到管理菜单项 更新至Walker_Nav_Menu_Edit的WP 3.7.1版本
1.3.5
添加nav_menu_roles_item_visibility过滤器以处理不使用传统角色的插件
1.3.4
感谢@hassanhamm更新管理员语言 感谢@hassanhamm添加阿拉伯语翻译
1.3.3
修复Nav_Menu_Roles_Import not found错误
1.3.2
愚蠢的注释错误导致保存问题
1.3.1
SVN无法包含导入程序文件!
1.3
添加自定义导入程序
1.2
由于Evan Stein@vanpop,主题的主要修复是使用他们自己的定制Walker http://vanpop.com/ 菜单项不是定制的导航器,而是通过wp_get_nav_menu_items过滤器控制的 删除自定义导航器代码
1.1.1
修复到插件网站的链接 修复admin Walker中的标签
1.1
清除调试消息
1
Erstveröffentlichung公司