久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

02:講透WordPress 菜單開發 – 權限控制與加載指定JS

本節主要解決兩個問題,僅限訪問指定菜單和僅限指定人員訪問菜單,還有,指定菜單頁加載 CSS 和 JS 資源。通過本節內容,希望能對諸位在菜單權限控制方面,有所啟發。

承接上文,本節主要解決兩個問題,

  • 菜單權限控制 – 僅限訪問指定菜單和僅限指定人員訪問菜單
  • 指定菜單頁加載 CSS 和 JS

問題

本節圍繞以下兩個常見問題進行展開

權限控制

雖然默認的權限控制已經好用,但有時,我們希望只有指定 ID 的用戶才能訪問菜單。

比如,在我開發退款插件時,為了控制退款員工的權限,我只讓他們訪問 退款 菜單,其他菜單都拒絕訪問,避免造成其他影響。

我可不希望退款員工刪除網站首頁,那就糟糕了

但是,只有管理員才有退款權限

加載 JS 和 CSS

默認的加載方式是在所有菜單頁面上都加載 JS 和 CSS 資源,當加載的資源過多,會造成所有菜單頁都會卡頓。

這點太不好了,該省省,該花花,這點瀏覽器資源,還是很有必要節省的。

通過在指定的菜單上才加載資源,可以有效的節省瀏覽器資源,提升后臺頁面訪問速度。

后臺一般是給管理者使用的,一般不太在乎頁面加載速度,但是,這個是可以省的,我們還是節省下吧

流程

02:講透WordPress 菜單開發 - 權限控制與加載指定JS

僅限指定用戶可訪問此菜單

獲取用戶ID

一般用戶 ID 是設置選項給出的一個數組,這里我們進行簡化,直接從用戶列表中拿幾個用戶 ID 組成數組。

在用戶列表中,選擇你需要獲取的用戶,鼠標點擊編輯按鈕,

02:講透WordPress 菜單開發 - 權限控制與加載指定JS

在 URL 中,注意這個 user_id 字段

http://localhost:10004/wp-admin/user-edit.php?user_id=2&wp_http_referer=%2Fwp-admin%2Fusers.php

其中,user_id 后面的值,就是用戶 ID 了,我們憑借這個值,來判斷當前訪問的用戶。

我們將需要控制的用戶 ID 組成數組

$a = array(1, 2, 3, 4, 5, 6); // 示例數組,存儲若干用戶ID

添加判斷

還記得之前講到,是如何創建頂級菜單的嘛?實例代碼如下

//創建一個菜單
function vuespa_create_menu_page()
{
    add_menu_page(
        'VueSpa選項',                   // 此菜單對應頁面上顯示的標題
        'VueSpa',                      // 要為此實際菜單項顯示的文本
        'administrator',               // 哪種類型的用戶可以看到此菜單
        'vuespa_id',                   //  此菜單項的唯一ID(即段塞)
        'vuespa_menu_page_display',    // 呈現此頁面的菜單時要調用的函數的名稱
        'dashicons-admin-customizer',  //圖標 - 默認圖標
        '500.1',                       //位置
    );
} // end vuespa_create_menu_page 
add_action('admin_menu', 'vuespa_create_menu_page');

我們對其添加一個判斷,若當前訪問菜單的人是指定的用戶 ID,則輸出空值,不顯示菜單。

判斷條件如下:

if (
current_user_can('administrator') 
&& is_array($a) 
&& in_array(get_current_user_id(), $a)
) {}
  • 判斷是否擁有管理員權限(可按需設置)
  • 并且,變量 $a 是否是數組
  • 并且,當前訪問菜單的用戶 ID 是否在數組 $a 中。

只有當前訪問菜單的用戶 ID 符合以上所有需求,才會展示菜單。

is_array() 用于類型檢查,提升代碼健壯性

示例

//創建一個菜單
function vuespa_create_menu_page()
{

//控制權限的員工 ID
$a = array(1, 2, 3, 4, 5, 6); // 示例數組,存儲若干用戶ID

//權限判斷

if (
current_user_can('administrator') 
&& is_array($a) 
&& in_array(get_current_user_id(), $a)
) {

    add_menu_page(
        'VueSpa選項',                   // 此菜單對應頁面上顯示的標題
        'VueSpa',                      // 要為此實際菜單項顯示的文本
        'administrator',               // 哪種類型的用戶可以看到此菜單
        'vuespa_id',                   //  此菜單項的唯一ID(即段塞)
        'vuespa_menu_page_display',    // 呈現此頁面的菜單時要調用的函數的名稱
        'dashicons-admin-customizer',  //圖標 - 默認圖標
        '500.1',                       //位置
    );
    }
} // end vuespa_create_menu_page 
add_action('admin_menu', 'vuespa_create_menu_page');

現在,我們開發的這個菜單,即使是管理員來了,也只有指定的管理員才能訪問。

指定用戶僅限訪問指定菜單

業務介紹:

在開發退款插件時,只有管理員才有退款權限,所以,只能給退款員工以管理員權限。

但是為了防止退款員工進行除退款外的其他操作,我們需要限制退款員工只能訪問退款菜單。

流程

  1. 提供的變量是否是數組
  2. 當前訪問的用戶ID是否在提供數組中
  3. 獲取當前鏈接的 page 字段,是否是指定菜單
  4. 如果是 admin-ajax.php 或 admin-post.php,則不攔截
  5. 符合以上全部信息,則攔截,并提供提示信息

對于第四點,如果我們當前在限制的菜單中,當我們要進行數據查詢或保存數據等操作,會通過以上兩個文件發出請求,這會因為不符合第3個條件而被攔截,這里做個例外。

示例代碼

以下代碼可供參考

//權限管理
add_action('admin_init', 'mqzj_restrict_access');

function mqzj_restrict_access()
{
    $user = wp_get_current_user();

   $a = array(1, 2, 3, 4, 5, 6); // 示例數組,存儲若干用戶ID 

    // 如果 $a 為空或為字符串,則將其賦值為空數組
    if (empty($a) || is_string($a)) {
        $a = array();
    }

     //是限定 ID 
    if (in_array($user->ID, $a)) {
        //在訪問限定菜單
        if ((isset($_GET['page']) && $_GET['page'] == 'refund_querys') || (isset($_GET['page']) && $_GET['page'] == 'npcink_orders_list')) {
            return;
        } elseif (
        // 如果是 admin-ajax.php 或 admin-post.php,則不攔截
        preg_match('/^/wp-admin/(admin-ajax.php|admin-post.php)/', $_SERVER['PHP_SELF'])) {

            return;
        } else {
            //跳轉
            $adminPage = get_admin_url() . 'admin.php'; 
            $refundPage = get_admin_url() . 'index.php'; 
            $message = '
            您暫無授權訪問此頁面,請聯系管理員授權! 
            <ul> 
            <li>
            <a href="' . $adminPage . '?page=npcink_orders_list">訂單管理</a>
            </li> 
            <li>
            <a href="' . $refundPage . '?page=refund_querys">訂單退款</a>
            </li> 
            </ul>
            ';
            wp_die($message);
            exit;
        }
    }
}

上面僅允許訪問和提示的菜單如下

http://m.kartiktrivedi.com/wp-admin/index.php?page=refund_querys
http://m.kartiktrivedi.com/wp-admin/admin.php?page=npcink_orders_list&order_state=f

相信你已經掌握了其中的思路,留一個思考題,

你知道如何禁止訪問評論菜單,比如這樣的鏈接

http://m.kartiktrivedi.com/wp-admin/edit-comments.php

歡迎您在評論區中給出答案。

控制 JS 和 CSS 在菜單中的加載

加載資源

我們一般加載上述資源是這樣寫的

function vuespa_load_vues($hook)
{
    //版本號
    $ver = '66';
    //加載到頁面頂部
    wp_enqueue_style('vite', plugin_dir_url(__FILE__) . 'vites/dist/index.css', array(), $ver, false);
    //加載到頁面底部
    wp_enqueue_script('vite', plugin_dir_url(__FILE__) . 'vites/dist/index.js', array(), $ver, true);
}
//樣式加載到后臺
add_action('admin_enqueue_scripts', 'vuespa_load_vues');

這樣,我們就在所有后臺的所有頁面上,加載了上述資源

獲取 $hook

還記得之前創建菜單時,每個菜單都有唯一的 slug 嘛?每個菜單頁面也是有唯一的 $hook 的。

我們可以通過以下代碼獲取當前菜單的 $hook 值。

function wpdocs_myselective_css_or_js( $hook ) {
    echo '<h1 style="color: crimson;text-align: center;">' . esc_html( $hook ) . '</h1>';
}

add_action( 'admin_enqueue_scripts', 'wpdocs_myselective_css_or_js' ); 

打開我們需要獲取的菜單頁面,效果如下

02:講透WordPress 菜單開發 - 權限控制與加載指定JS

進行判斷

有了唯一值,剩下的交給判斷就好了。

function vuespa_load_vues($hook)
{
    //判斷當前頁面是否是指定頁面,是則繼續加載
    if ('toplevel_page_vuespa_id' != $hook) {
        return;
    }
    //版本號
    $ver = '53';
    //加載到頁面頂部
    wp_enqueue_style('vite', plugin_dir_url(__FILE__) . 'vites/dist/index.css', array(), $ver, false);
    //加載到頁面底部
    wp_enqueue_script('vite', plugin_dir_url(__FILE__) . 'vites/dist/index.js', array(), $ver, true);
}
//樣式加載到后臺
add_action('admin_enqueue_scripts', 'vuespa_load_vues');

通過上述代碼中的 if 判斷,就只會在符合要求的 $hook 菜單上加載資源了。

總結

本節關注菜單權限方面,進行了菜單展示權限和菜單中加載資源的研究,這是我們日常開發中常用的功能。

通過上述兩個權限的適當配合,可以一定程度上解決部分安全問題和頁面加載緩慢的問題。

關于 WordPress 菜單的主要內容,到此為止,后續會根據實際問題,不定期更新相關內容。

最新文章

  • 后續文章不定期撰寫中,點個關注,獲取平臺最新文章推送。
  • 技術有限,還望諸位協助勘誤,于評論區指出,
  • 常一文多發,最新勘定和增補文章于下方鏈接給出
  • http://m.kartiktrivedi.com/277349.html
??
Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
?
購物車
優惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      亚洲精品一区二三区| av在线免费看片| 天天综合网久久| 人妻无码一区二区三区久久99| 国产高清免费av| 久久久久久久久久一区| 一区二区在线免费观看视频| 豆国产97在线 | 亚洲| 欧美亚洲另类小说| 亚洲一区二区观看| 久久久久亚洲av片无码下载蜜桃| 午夜福利理论片在线观看| aaaaaa毛片| 人妻中文字幕一区二区三区| 亚洲天堂2021av| 免费国产羞羞网站美图| 亚洲乱码国产乱码精品| 久久久无码人妻精品无码| 亚洲国产123| 久久美女免费视频| 亚洲精品一区二区二区| 久久久久久久片| 亚洲色偷精品一区二区三区| 久久久久久久久久99| 亚洲黄色av片| 免费看黄色av| av网在线播放| 少妇喷水在线观看| 国产精品久久久久久久免费| 四虎精品一区二区三区| 国产免费www| 午夜小视频免费| 国产在线一二区| 亚洲精品国产手机| 欧美日韩乱国产| www.com久久久| 婷婷社区五月天| 国产在线一级片| 一级特黄特色的免费大片视频| 男女羞羞免费视频| 丰满肥臀噗嗤啊x99av| 性猛交娇小69hd| 九九视频免费看| 91视频久久久| 西西大胆午夜视频| 精品久久久久久久久久久国产字幕 | 三级av免费观看| 国产女人18水真多毛片18精品| 一区二区三区国产免费| 久久综合在线观看| 99热一区二区| 伊人色综合久久久| 欧美国产日韩另类| 国产九九在线观看| 亚洲视频在线观看一区二区三区| 欧美熟妇精品一区二区| 国产精品免费精品一区| 亚洲黄色a级片| 天堂网中文在线观看| 九九热免费在线| 国产a级免费视频| 最近中文字幕免费在线观看| 欧美一区二区三区粗大| 精品亚洲视频在线| 国产福利视频导航| 91人人澡人人爽| 中文字幕观看av| 色婷婷在线视频观看| 六月丁香激情综合| 国产美女无遮挡永久免费| 99久久久久久久久久| 中文天堂在线视频| 天天色综合久久| 人妻精品久久久久中文字幕69| 韩国无码一区二区三区精品| www.美色吧.com| 一级黄色a毛片| 中文字幕一区二区三区四区免费看| 秋霞精品一区二区三区| 九九热精彩视频| 国产精品久久久毛片| 99久久久免费精品| 亚洲国产精品三区| 亚洲av综合色区无码另类小说| 日本黄区免费视频观看| 久久精品一区二区三| 国产一级免费观看| 国产乱码一区二区三区四区| www.色.com| 91精产国品一二三产区别沈先生| 亚洲日本韩国在线| 亚洲国产综合一区| 综合五月激情网| 中文字幕第六页| 这里只有精品9| 影音先锋在线国产| 亚洲 欧美 日韩 在线| 四季av一区二区| 日本视频www| 日本一区二区视频在线播放| 欧美三级在线免费观看| 久久综合桃花网| 牛夜精品久久久久久久| 乱码一区二区三区| 麻豆亚洲av熟女国产一区二| 久久精品国产亚洲AV熟女| 久久香蕉精品视频| 久久久精品视频国产| 久久久久亚洲av无码专区体验 | 日韩精品一区二区不卡| 欧美日韩国产精品一区二区三区| 美女的奶胸大爽爽大片| 欧美成欧美va| 三级在线观看网站| 无码精品视频一区二区三区| 亚洲xxxx天美| 中文字幕在线播放av| 亚洲欧美在线不卡| aaa级黄色片| 国产成年人免费视频| 国产探花在线视频| 久久久久久久久久久久久久免费看 | 中文字幕无人区二| 亚洲天堂久久新| caoporn超碰97| 国产理论视频在线观看| 久久av无码精品人妻系列试探| 久久久久久久久影院| 人妻丰满熟妇av无码区| 天天爽天天爽夜夜爽| 亚洲高清无码久久| 97人妻天天摸天天爽天天| 国产高潮流白浆喷水视频| 精品人妻互换一区二区三区| 内射毛片内射国产夫妻| 神马午夜一区二区| 亚洲精品国产精品乱码在线观看| 97中文字幕在线观看| 国产精品综合在线| 蜜臀久久久久久999| 丝袜制服一区二区三区| 亚洲狼人综合干| 国产精品美女久久久久av爽| 久久久精品人妻一区二区三区| 日本天堂网在线观看| 中文字幕成人免费视频| а√中文在线资源库| 国产在线视频卡一卡二| 日本精品一二三| 中文字幕 视频一区| 成人h动漫精品一区二区下载| 久草免费在线观看视频| 日韩美女黄色片| 亚洲一区二区乱码| 国产区一区二区三| 欧美一级特黄高清视频| 一区二区乱子伦在线播放| 99视频只有精品| 久久久久久国产精品视频| 五月激情六月婷婷| 99久久99久久久精品棕色圆| 国产精品午夜一区二区| 青青青在线视频免费观看| 中文字幕欧美在线观看| 国产一级aa大片毛片| 日韩三级一区二区三区| 538在线视频观看| 国内毛片毛片毛片毛片毛片| 婷婷社区五月天| 成人免费毛片糖心| 秋霞午夜鲁丝一区二区| 亚洲国产一二三区| 精品人妻一区二区三区视频 | www.激情五月.com| 久久久久亚洲AV成人| 在线观看日本网站| 国产亚洲成人av| 亚洲春色一区二区三区| 国产精品一区二区三区四| 色欲av永久无码精品无码蜜桃| 91精品国产乱码久久久| 久久久久久久国产精品毛片| 中文字幕一区二区人妻视频 | 国产性猛交96| 亚洲AV午夜精品| 国产又粗又猛又黄视频| 无人码人妻一区二区三区免费| 国产成人自拍网站| 日批视频在线播放| 国产高潮呻吟久久| 午夜精品久久久久久久蜜桃| 国产九色在线播放九色| 午夜免费高清视频| 国产又黄又嫩又滑又白| 影音先锋亚洲天堂| 久久人妻免费视频| 911亚洲精选| 日批视频免费在线观看| 国产美女永久免费| 中文字幕网av|