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

02:講透WordPress 菜單開發(fā) - 權(quán)限控制與加載指定JS

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

承接上文,本節(jié)主要解決兩個(gè)問題,

  • 菜單權(quán)限控制 - 僅限訪問指定菜單和僅限指定人員訪問菜單
  • 指定菜單頁加載 CSS 和 JS

問題

本節(jié)圍繞以下兩個(gè)常見問題進(jìn)行展開

權(quán)限控制

雖然默認(rèn)的權(quán)限控制已經(jīng)好用,但有時(shí),我們希望只有指定 ID 的用戶才能訪問菜單。

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

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

但是,只有管理員才有退款權(quán)限

加載 JS 和 CSS

默認(rèn)的加載方式是在所有菜單頁面上都加載 JS 和 CSS 資源,當(dāng)加載的資源過多,會(huì)造成所有菜單頁都會(huì)卡頓。

這點(diǎn)太不好了,該省省,該花花,這點(diǎn)瀏覽器資源,還是很有必要節(jié)省的。

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

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

流程

02:講透WordPress 菜單開發(fā) - 權(quán)限控制與加載指定JS

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

獲取用戶ID

一般用戶 ID 是設(shè)置選項(xiàng)給出的一個(gè)數(shù)組,這里我們進(jìn)行簡化,直接從用戶列表中拿幾個(gè)用戶 ID 組成數(shù)組。

在用戶列表中,選擇你需要獲取的用戶,鼠標(biāo)點(diǎn)擊編輯按鈕,

02:講透WordPress 菜單開發(fā) - 權(quán)限控制與加載指定JS

在 URL 中,注意這個(gè) user_id 字段

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

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

我們將需要控制的用戶 ID 組成數(shù)組

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

添加判斷

還記得之前講到,是如何創(chuàng)建頂級菜單的嘛?實(shí)例代碼如下

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

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

判斷條件如下:

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

只有當(dāng)前訪問菜單的用戶 ID 符合以上所有需求,才會(huì)展示菜單。

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

示例

//創(chuàng)建一個(gè)菜單
function vuespa_create_menu_page()
{

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

//權(quán)限判斷

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

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

現(xiàn)在,我們開發(fā)的這個(gè)菜單,即使是管理員來了,也只有指定的管理員才能訪問。

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

業(yè)務(wù)介紹:

在開發(fā)退款插件時(shí),只有管理員才有退款權(quán)限,所以,只能給退款員工以管理員權(quán)限。

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

流程

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

對于第四點(diǎn),如果我們當(dāng)前在限制的菜單中,當(dāng)我們要進(jìn)行數(shù)據(jù)查詢或保存數(shù)據(jù)等操作,會(huì)通過以上兩個(gè)文件發(fā)出請求,這會(huì)因?yàn)椴环系?個(gè)條件而被攔截,這里做個(gè)例外。

示例代碼

以下代碼可供參考

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

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

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

    // 如果 $a 為空或?yàn)樽址瑒t將其賦值為空數(shù)組
    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 {
            //跳轉(zhuǎn)
            $adminPage = get_admin_url() . 'admin.php'; 
            $refundPage = get_admin_url() . 'index.php'; 
            $message = '
            您暫無授權(quán)訪問此頁面,請聯(lián)系管理員授權(quán)! 
            <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

相信你已經(jīng)掌握了其中的思路,留一個(gè)思考題,

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

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

歡迎您在評論區(qū)中給出答案。

控制 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

還記得之前創(chuàng)建菜單時(shí),每個(gè)菜單都有唯一的 slug 嘛?每個(gè)菜單頁面也是有唯一的 $hook 的。

我們可以通過以下代碼獲取當(dāng)前菜單的 $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 菜單開發(fā) - 權(quán)限控制與加載指定JS

進(jìn)行判斷

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

function vuespa_load_vues($hook)
{
    //判斷當(dāng)前頁面是否是指定頁面,是則繼續(xù)加載
    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 判斷,就只會(huì)在符合要求的 $hook 菜單上加載資源了。

總結(jié)

本節(jié)關(guān)注菜單權(quán)限方面,進(jìn)行了菜單展示權(quán)限和菜單中加載資源的研究,這是我們?nèi)粘i_發(fā)中常用的功能。

通過上述兩個(gè)權(quán)限的適當(dāng)配合,可以一定程度上解決部分安全問題和頁面加載緩慢的問題。

關(guān)于 WordPress 菜單的主要內(nèi)容,到此為止,后續(xù)會(huì)根據(jù)實(shí)際問題,不定期更新相關(guān)內(nèi)容。

最新文章

  • 后續(xù)文章不定期撰寫中,點(diǎn)個(gè)關(guān)注,獲取平臺最新文章推送。
  • 技術(shù)有限,還望諸位協(xié)助勘誤,于評論區(qū)指出,
  • 常一文多發(fā),最新勘定和增補(bǔ)文章于下方鏈接給出
  • http://m.kartiktrivedi.com/277349.html

給TA贊賞
共{{data.count}}人
人已贊賞
??
Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
無意侵害您的權(quán)益,請發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
?
購物車
優(yōu)惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      国产日韩欧美a| 天堂影院一区二区| 亚洲成年人影院| 欧洲av一区二区嗯嗯嗯啊| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品羞羞答答xxdd| 2020日本不卡一区二区视频| 国产一区二区三区香蕉| 中文字幕中文字幕在线一区| 一本一本大道香蕉久在线精品| 亚洲男同1069视频| 欧美二区在线观看| 国模少妇一区二区三区| 亚洲天堂2016| 日韩一区二区三区免费看| 国产99久久久久久免费看农村| 综合婷婷亚洲小说| 日韩精品一区二区三区视频在线观看 | 一区二区三区在线影院| 在线电影欧美成精品| 国产麻豆精品久久一二三| 亚洲美女屁股眼交| 欧美大胆人体bbbb| 一本色道**综合亚洲精品蜜桃冫| 欧美aaaaa成人免费观看视频| 国产三级一区二区| 欧美电影一区二区三区| 成人一区二区三区视频| 爽好多水快深点欧美视频| 欧美国产日韩亚洲一区| 91精品国产综合久久久久久久| 成人黄色在线网站| 精彩视频一区二区三区| 一区二区三区av电影 | 亚洲高清免费在线| 国产日韩在线不卡| 日韩视频免费观看高清在线视频| 色www精品视频在线观看| 高潮精品一区videoshd| 人人狠狠综合久久亚洲| 亚洲综合色视频| 国产精品高潮久久久久无| 久久影音资源网| 欧美一级xxx| 欧美人体做爰大胆视频| 欧美在线你懂得| 一本大道久久a久久精品综合| 国产成人精品免费在线| 国产一区二区美女| 激情小说欧美图片| 美脚の诱脚舐め脚责91| 日韩中文字幕区一区有砖一区 | 亚洲一二三区在线观看| 亚洲人妖av一区二区| 国产精品福利在线播放| 亚洲国产精品av| 国产视频一区二区三区在线观看| 日韩免费高清视频| 精品久久久久久无| 欧美精品一区在线观看| 久久九九99视频| 日本一区二区免费在线| 久久久精品一品道一区| 久久久午夜电影| 欧美—级在线免费片| 国产精品家庭影院| 亚洲免费在线观看视频| 亚洲高清免费视频| 久久99国产精品免费网站| 麻豆精品在线观看| 国产米奇在线777精品观看| 国产a级毛片一区| 99久久精品国产一区| 欧洲av一区二区嗯嗯嗯啊| 日韩一级大片在线| 日韩精品在线看片z| 国产日产欧美一区二区视频| 国产精品二区一区二区aⅴ污介绍| 中文字幕亚洲区| 偷窥国产亚洲免费视频| 久久国产精品99久久人人澡| 久久99国产乱子伦精品免费| 成人黄色软件下载| 欧美性xxxxxx少妇| 亚洲精品在线免费播放| 亚洲天堂av一区| 日本中文字幕一区二区视频| 国产成a人亚洲精品| 欧美亚洲综合一区| 欧美大片免费久久精品三p | 亚洲18女电影在线观看| 国产米奇在线777精品观看| 99精品在线免费| 制服丝袜亚洲网站| 国产精品的网站| 偷拍亚洲欧洲综合| 成人av网站大全| 777亚洲妇女| 国产精品久久久久精k8| 美女高潮久久久| 色综合久久综合网| 中文字幕精品一区二区精品绿巨人 | 成人在线一区二区三区| 欧美日韩国产首页在线观看| 日本一区二区成人| 蜜桃精品在线观看| 欧美日韩国产美| 亚洲色图丝袜美腿| 国产精品1区二区.| 在线播放中文一区| 亚洲综合色自拍一区| 菠萝蜜视频在线观看一区| 日韩免费高清av| 性做久久久久久| 91免费看视频| 国产精品黄色在线观看| 狠狠色丁香久久婷婷综合丁香| 欧美精品久久天天躁| 一区二区三区在线免费播放 | 精品一区二区三区香蕉蜜桃| 欧美在线一区二区三区| 亚洲黄色片在线观看| jlzzjlzz亚洲女人18| 国产目拍亚洲精品99久久精品| 久久国内精品自在自线400部| 欧美一区二区精品| 日韩电影一区二区三区| 91精品免费观看| 秋霞午夜av一区二区三区| 欧美日韩一区二区三区在线看| 国产精品理论片在线观看| 国产剧情av麻豆香蕉精品| 精品国产亚洲在线| 国产精品一区在线| 国产欧美日韩视频在线观看| 国产传媒久久文化传媒| 国产精品电影院| 欧洲一区二区三区在线| 亚洲aaa精品| 日韩精品一区二区三区中文精品| 黄色成人免费在线| 中文字幕欧美三区| 色又黄又爽网站www久久| 亚洲第一av色| 欧美一级黄色录像| 国产成人精品免费在线| 亚洲精品乱码久久久久久| 欧美久久免费观看| 精品一区二区久久| 国产精品福利一区二区| 欧美日韩国产综合草草| 精品无码三级在线观看视频| 国产精品美女www爽爽爽| 91成人在线免费观看| 日本伊人午夜精品| 国产日韩欧美精品在线| 欧美亚洲国产bt| 国产精品白丝jk黑袜喷水| 亚洲另类色综合网站| 在线播放一区二区三区| 国产99精品国产| 亚洲va欧美va国产va天堂影院| 欧美一区二区成人6969| 福利视频网站一区二区三区| 亚洲一二三区视频在线观看| 久久亚洲精华国产精华液| 日本韩国欧美一区| 国产伦精一区二区三区| 亚洲综合丁香婷婷六月香| 精品久久久久久久久久久久久久久 | 99久久精品国产观看| 爽爽淫人综合网网站| 欧美—级在线免费片| 欧美丰满高潮xxxx喷水动漫| 成人久久18免费网站麻豆| 理论电影国产精品| 亚洲宅男天堂在线观看无病毒 | 精品国产第一区二区三区观看体验| 99久久免费精品| 国产美女精品在线| 蜜臀久久99精品久久久久宅男| 亚洲视频每日更新| 久久精品夜色噜噜亚洲a∨| 欧美精品vⅰdeose4hd| 99精品偷自拍| 国产福利精品导航| 青青草视频一区| 五月婷婷久久综合| 亚洲与欧洲av电影| 亚洲色图色小说| 国产精品看片你懂得| 欧美激情一区二区三区不卡| 久久综合久久综合久久综合| 欧美精品第1页| 欧美日韩一区二区三区不卡| 91欧美一区二区| 99精品国产热久久91蜜凸| 国产91丝袜在线18| 国产精品99久久久久久久女警| 久久99精品国产|