前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress二次开发之插件权限控制

WordPress二次开发之插件权限控制

作者头像
切图仔
发布2022-09-14 15:22:34
5730
发布2022-09-14 15:22:34
举报
文章被收录于专栏:生如夏花绚烂

字体样式插件为例,我们在添加菜单时设置了参数 manage_options 表示有这个权限的角色才能创建该菜单,而这个权限只有管理员才有,只有管理员登录时才能看到该菜单 ,这是一种方式

代码语言:javascript
复制
add_menu_page(
    '字体颜色',
    '字体颜色',
    'manage_options',
    'my_menus',
    array($this,'my_settings_page')
);

current_user_can 第二种方式 通过current_user_can('root')判断用户是否具备某权限

代码语言:javascript
复制
if(!current_user_can('edit_posts'))return
add_menu_page(
    '字体颜色',
    '字体颜色',
    'manage_options',
    'read',
    array($this,'my_settings_page')
);

虽然将菜单的权限设置为read(任何用户都能看见)但只要该用户没有edit_posts权限那么他也看不到该菜单

除了用户权限的控制,我们还希望脚本文件,css文件等也受到控制,默认情况下插件引入的js文件会作用域全局,也就是插件的js代码在当前插件页面有效,在后台其他页面甚至前台也会有效,这不符合常理,因此可以通过 get_current_screen来进行处理

代码语言:javascript
复制
public function __construct()
    {
        add_action('admin_init',array($this,'register_my_test_setting'));
        add_action('wp_head',array($this,'my_test_head_fun'));
        
        
        add_action('admin_enqueue_scripts',array($this,'load_script'));
       
        //处理ajax 钩子
        add_action('wp_ajax_my_color_check', array($this,'color_check_fun'));
        add_action('wp_ajax_my_test',array($this,'my_test'));
        //插件本地化
        add_action('init',array($this,'my_load_textdomain'));

    }
    public function load_script(){
        $screen = get_current_screen();//获取当前页面信息
     
        if(is_object($screen) && $screen->id === 'options-general'){
             //引入js
        wp_enqueue_script('my_test',plugins_url('js/my_test.js',__FILE__),array('jquery'));
        //注册ajax处理页面 第一个参数必须相同
        wp_localize_script('my_test','ajax_object',array('ajax_url'=>admin_url('admin-ajax.php')));

        }
    }

我们向 admin_enqueue_scripts钩子添加处理函数 ,在函数体内判断当前页面id,如果为 options-general则加载js文件,这样js文件只作用域当前插件页面

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档