插件创建,限制对特定角色的访问

时间:2015-11-15 作者:Liam

我正在创建我的第一个相当简单的WP插件。我很难理解权限和访问权限。如何将插件的访问权限限制为仅限管理员访问?

当插件加载到管理菜单面板时,有没有一种简单的方法可以做到这一点?按照下面的伪代码:

if(logged_in_user != Amdim){
do not load menu
} 

1 个回复
最合适的回答,由SO网友:sakibmoon 整理而成

Wordpress以前有用户级别的概念,您可以检查当前用户的级别。但它已被更改为角色和能力系统。在这个系统中,每个任务都被定义为一种能力,某些用户角色具有这种能力。

有了它,您可以创建新的功能。比方说,您想创建一个新的用户角色(除了内置的超级管理员、管理员、编辑器、作者、参与者和订阅者角色),这些角色具有您创建的新功能。它提供了极大的灵活性。如果需要,还可以调整内置功能。

如果您只需要检查某个用户是否具有特定角色,比如管理员,那么您应该检查管理员具有哪些功能,而下一个角色没有这些功能。默认情况下,管理员具有编辑器所不具备的以下功能

激活插件创建用户删除插件删除用户导出插件安装插件

  • 安装主题
  • 列出用户
  • 管理选项
  • 提升用户
  • 删除用户
  • 切换主题
  • 更新核心
  • 更新插件更新主题编辑仪表板
      您可以在中查看完整列表Capability vs Role table

      检查当前用户是否具有功能的函数是current_user_can

      因此,要检查当前用户是否是管理员,可以执行以下操作

      if( current_user_can(\'activate_plugins) ){
          //do what only the admin user should do
      }
      

      if( current_user_can(\'create_users\') ){
          //do what only the admin user should do
      }
      

      if( current_user_can(\'manage_options\') ){
          //do what only the admin user should do
      }
      
      等等

      同样的规则适用于其他用户角色。

      使用什么功能完全是您的选择,但我更喜欢使用与正在完成的任务相关的功能。例如,如果我正在处理选项页(管理菜单面板),我更喜欢检查current_user_can(\'manage_options\')

      要回答问题的第二部分(如果我理解正确的话),如果要创建管理菜单页,应该使用add_menu_page

      此函数的第三个参数是$capability. 您在此处提供的功能决定了用户可以访问该页面的角色。如果您提供\'manage_options\', 只有管理员才能访问该页面。如果您提供\'delete_posts\', 作者、编辑和管理员可以访问该页面。

    相关推荐