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

不同的用戶,不同的權限-WordPress開發

清楚的了解不同的權限之間的聯系,是很有必要的,這一篇wordpress權限的文章來源于官方文檔,值得參考

在wordpress主題開發和日常使用過程中,清楚的了解不同的權限之間的聯系,是很有必要的,這一篇wordpress權限的文章來源于官方文檔,值得參考。

描述

WordPress使用角色概念,旨在讓網站所有者能夠控制用戶在網站內可以做什么和不可以做什么。站點所有者可以通過為每個用戶分配特定角色來管理用戶對諸如撰寫和編輯帖子,創建頁面,定義鏈接,創建類別,審核評論,管理插件,管理主題以及管理其他用戶等任務的訪問權限。

WordPress有六個預定義的角色:超級管理員管理員編輯作者貢獻者訂閱者。允許每個角色執行一組稱為“?功能”的任務。有許多功能,包括“?publish_posts?”,“?moderate_comments?”和“?edit_users?”。為每個角色預先分配了一組默認功能,但可以使用add_cap()和?remove_cap()函數分配或刪除其他功能。可以使用add_role()引入或刪除新角色和remove_role()函數。

在超級管理員角色允許用戶執行所有可能的功能。每個其他角色的允許功能數量都在減少。例如,訂閱者角色只具有“?讀取?”功能。不應將一個特定角色視為另一個角色的高級角色。相反,請考慮角色定義用戶在站點內的職責。

WordPress 的角色和權限系統比用戶等級的方法靈活得多,它支持對現有用戶角色添加,刪除和重新分配權限,甚至還可以添加更多的用戶角色,并且不破壞系統原有內置的用戶角色。

使用權限系統,就不必去擔心 WordPress 不再支持用戶等級系統,并且如果想添加和使用自定義的權限,也只能使用權限系統。

角色摘要

  • 超級管理員?- 有權訪問網站管理功能和所有其他功能的人。請參閱創建網絡文章。
  • 管理員slug:'administrator') - 有權訪問單個站點中的所有管理功能的人。
  • 編輯slug:'編輯') - 可以發布和管理帖子的人,包括其他用戶的帖子。
  • 作者slug:'author') - 可以發布和管理自己帖子的人。
  • 貢獻者slug:'貢獻者') - 可以編寫和管理自己的帖子但無法發布它們的人。
  • 訂閱者slug:'subscriber') - 只能管理其個人資料的人。

安裝WordPress后,將自動創建管理員帳戶。

可以在“?管理面板”?>?“設置”?>“?常規”中設置新用戶的默認角色。

您可以通過訪問全局WP_Roles對象的role_names屬性(可以使用wp_roles()檢索,或者在版本4.3之前使用全局$ wp_roles;)來查看所有已定義角色的列表。

角色

角色定義允許用戶分配角色的一組任務。例如,超級管理員角色包括能夠在內部進行一切可能的任務,網絡虛擬的WordPress?網站。該管理員角色限制所允許的任務,只有那些影響一個站點。另一方面,Author角色只允許執行一小部分任務。


來源于:

https://www.solagirl.net/wordpress-get-current-user-role.html

過去判斷登錄用戶的角色我喜歡用current_user_can(),比如判斷當前用戶是否是作者用current_user_can('author'),記得WordPress官方文檔中給的例子也是這樣用,不過今天看了一下文檔,貌似用法變了,傳遞角色作為參數不再可靠,正確的用法是傳遞$capability,那么該如何判斷用戶角色呢?

注:以下內容在WP 3.4+上測試通過

current_user_can()的正確用法

current_user_can()文檔中有一句話要注意一下

Do not pass a role name to current_user_can(), as this is not guaranteed to work correctly.

意思是說傳遞用戶角色名稱(如author、contributor)作為參數不能100%保證返回正確的結果,正確的用法是傳遞$capability,從這個函數的表面意思看,參數是權限比參數是角色名稱更靠譜。

所以,要根據不同角色擁有的權限來判斷用戶角色,用戶權限可以在Roles and Capabilities中找到。

判斷用戶是否為管理員(Administrator)

if( current_user_can(?'manage_options'?) ) {
????echo?'The current user is a administrator';?
}

判斷用戶是否為編輯(Editor)

if( current_user_can(?'publish_pages'?) && !current_user_can(?'manage_options'?) ) {
????echo?'The current user is an editor';?
}

判斷用戶是否為作者(Author)

if( current_user_can(?'publish_posts'?) && !current_user_can(?'publish_pages'?) ) {
????echo?'The current user is an author';?
}

判斷用戶是否為投稿者(Contributor)

if( current_user_can(?'edit_posts'?) && !current_user_can(?'publish_posts'?) ) {
????echo?'The current user is a contributor';?
}

判斷用戶是否為訂閱者(Subscriber)

if( current_user_can(?'read'?) && !current_user_can(?'edit_posts'?) ) {
????echo?'The current user is a subscriber';?
}

用$current_user判斷

$current_user是WordPress的一個全局變量,當用戶登錄后,這個里面就會有用戶的角色和權限信息。

當WordPress的init action執行后,就可以安全的使用$current_user全局變量了。

在模板文件中判斷登錄用戶是否為作者(Author)

global?$current_user;
if(?$current_user->roles[0] ==?'author'?) {
????echo?'The current user is an author';
}

在functions.php中判斷用戶是否為作者(Author)

add_action(?'init',?'check_user_role'?);
?
function?check_user_role() {
????global?$current_user;
????if(?$current_user->roles[0] ==?'author'?) {
????????echo?'The current user is an author';
????}
}

之所以要使用

add_action(?'init',?'check_user_role'?);

是因為$current_user這個全部變量到init action執行時才完成賦值,既然要讀它的內容,至少要等到它的內容準備好后再讀取。functions.php的代碼先與init action執行,所以在functions.php中直接寫global $current_user是無法獲取用戶信息的。詳細信息可以參考《WordPress Actions加載順序》。

檢查用戶角色之前,還可以先檢查一下用戶是否登錄

??????if( is_user_logged_in() ) {
??????????//用戶已登錄,檢查用戶角色
??????}
?>

author_can(),可以用來檢查某個文章的作者是否具有一定的權限:

if ( author_can( $post, $capability ) ) {
// 如果文章 $post 的作者擁有 $capability 時執行的動作
}
?

函數?author_can?第一個參數可以是一個 $post 對象,或一個 Post ID。

更簡單的方法

還有一種更直接的方法,例如判斷當前用戶是否為管理員

global $current_user;
if(in_array(?'administrator', $current_user->roles )){
????echo?'administrator'

你好,請問判斷用戶登錄后再提供下載鏈接,這樣如何操作?

if?( is_user_logged_in() ) {
????echo?'登陸用戶';
}?else?{
????echo?'未登錄用戶!';
}

WordPress判斷用戶等級顯示相應內容

實現方法

 if( !current_user_can('administrator') ) {
echo '這段文字在非管理員角色才會顯示,因為判斷函數前加了感嘆號。';
}?>

判斷是否管理員

 if( current_user_can('administrator') ) {
echo '這段文字只會在“管理員”角色登錄后顯示。';
}?>

判斷是否編輯

 if( current_user_can('editor') ) {
echo '這段文字只會在“編輯”角色登錄后顯示。';
}?>

判斷是否作者

 if( current_user_can('author') ) {
echo '這段文字只會在“作者”角色登錄后顯示。';
}?>

判斷是否投稿者

 if( current_user_can('contributor') ) {
echo '這段文字只會在“投稿者”角色登錄后顯示。';
}?>

判斷是否訂閱者

 if( current_user_can('subscriber') ) {
echo '這段文字只會在“訂閱者”角色登錄后顯示。';
}?>

根據權限判斷角色

有些時候因為某些原因用戶角色權限會被修改,所以這個時候再用以上代碼直接判斷用戶角色可能就實現不到我們想要的功能了,但我們還可以通過區分權限來區分角色。

if( current_user_can( ‘manage_options’ ) )
{ echo ‘這段文字只會在“管理員”角色登錄后顯示。’; }
if( current_user_can( ‘publish_pages’ ) && !current_user_can( ‘manage_options’ ) )
{ echo ‘這段文字只會在“編輯”角色登錄后顯示。’; }
if( current_user_can( ‘publish_posts’ ) && !current_user_can( ‘publish_pages’ ) )
{ echo ‘這段文字只會在“作者”角色登錄后顯示。’; }
if( current_user_can( ‘edit_posts’ ) && !current_user_can( ‘publish_posts’ ) )
{ echo ‘這段文字只會在“投稿者”角色登錄后顯示。’; }
if( current_user_can( ‘read’ ) && !current_user_can( ‘edit_posts’ ) )
{ echo ‘這段文字只會在“訂閱者”角色登錄后顯示。’; }
?>

WordPress 會員等級

首先先來了解WordPress會員的等級區分:

管理者:Administrator: level 10

編輯:Editor: Level 7

作者:Author: Level 4

撰寫人員:Contributor: Level 2

訂閱者:Subscriber: Level 0

一般訪客(非會員): Level 在 0 以下

以下將使用官方提供的函數: current_user_can 來做會員等級區分.

僅允許管理員可瀏覽

 global $user_ID; if( $user_ID ) : ?>if( current_user_can('level_10') ) : ?>

這里顯示的內容為管理員可以看到的.

 endif; ?>endif; ?>

依照會員等級顯示不同的內容

 if (current_user_can('level_10')) : ?>

管理員可看到

 elseif (current_user_can('level_7')) : ?>

編輯可看到

 elseif (current_user_can('level_4')) : ?>

作者可看到

 elseif (current_user_can('level_2')) : ->

撰寫者可看到

 elseif (current_user_can('level_0')) : ?>

訂閱者可看到

 else : ?-->

一般非會員(未登入者)可看到

 endif; ?-->

用戶權限和后臺菜單

很多插件都都會在 WordPress 后臺添加一個管理頁面,讓用戶自定義插件選項,一般我們可以通過下面的函數實現:

// 添加主菜單
add_menu_page(page_title, menu_title, capability, handle, [function], [icon_url]);

// 添加子菜單
add_submenu_page(parent, page_title, menu_title, capability, file/handle, [function]);

//添加選項菜單子菜單
add_options_page(page_title, menu_title, capability, handle, [function]);

//添加工具菜單子菜單
add_management_page(page_title, menu_title, capability, handle, [function]);

//添加頁面菜單子菜單
add_pages_page( page_title, menu_title, capability, handle, [function]);

//添加文章菜單子菜單
add_posts_page( page_title, menu_title, capability, handle, [function]);

//添加主題菜單子菜單
add_theme_page( page_title, menu_title, capability, handle, [function]);

我們很容易發現,這些函數都會有個參數:capability,這個參數就是用來指定用戶看到該菜單所需要的權限。一般它的值是一個代表某種權限的字符串,比如:edit_posts。所以使用這些額函數在 WordPress 后臺中添加的菜單以及與這些菜單相關聯的頁面,是只有擁有指定的權限的用戶才可以看到和訪問的。

如果你的主題或者插件有設置頁面,應該正確的控制哪些用戶有權限可以訪問這些頁面,比如,添加的是一個主題選項頁面,就應該使用?edit_themes?權限,而添加的是一個插件選項頁面的話,使用的應該是?edit_plugins?權限,當然也可以直接?manage_options?權限來控制訪問插件和主題選項頁面。

顯示不同權限的用戶

在數據庫中,關于權限的字段位于數據庫中 wp_usermeta 表中的 meta_value,所以這個判斷函數可以這么寫:

//以下為代碼正文…
   
global $wpdb;
//顯示管理員
$administrators = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value = 10 ORDER BY user_id");
//顯示管理員、編輯
$editors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 7 ORDER BY user_id");
//顯示管理員、編輯、作者
$authors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 2 ORDER BY user_id");
//顯示管理員、編輯、作者、投稿者
$contributors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 1 ORDER BY user_id");
//顯示管理員、編輯、作者、投稿者、訂閱者
$subscribers = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 0 ORDER BY user_id");
//歷遍顯示輸出所有相關用戶的顯示名稱
foreach($administrators as $administrator){
    echo get_the_author_meta('display_name', $administrator).'
';
}
?>

以上示例中只輸出權限最高的管理員用戶,大家都自己發揮吧!注釋都寫明了相關的權限和角色。

相關推薦

前臺顯示編輯鏈接-WordPress主題開發

怎么添加自定義角色和權限? - wordpress開發

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

    9000px;">

      日韩精品一区二区三区视频在线观看 | 狠狠色狠狠色综合| 日韩欧美一二三| 国产一区二区三区国产| 亚洲同性同志一二三专区| 欧美精品久久一区| 东方aⅴ免费观看久久av| 亚洲精品日日夜夜| 精品少妇一区二区三区| 99久久精品免费精品国产| 亚洲成av人影院在线观看网| 久久综合色天天久久综合图片| av在线这里只有精品| 日韩不卡一区二区三区| 亚洲欧洲成人精品av97| 欧美一区二区三区免费视频| 国产成人综合在线观看| 偷拍一区二区三区| 综合激情成人伊人| 国产网站一区二区| 日韩小视频在线观看专区| 91美女福利视频| 国产麻豆精品theporn| 亚洲成人激情av| 中文字幕一区二区三区精华液| 欧美一区二区美女| 欧美日韩在线三级| 色综合久久综合网97色综合| 国产在线播放一区三区四| 日韩av网站免费在线| 亚洲综合色区另类av| 国产精品不卡在线观看| 久久久久国产精品麻豆ai换脸| 欧美高清激情brazzers| 欧美亚日韩国产aⅴ精品中极品| 成人网男人的天堂| 国产成人精品www牛牛影视| 激情亚洲综合在线| 日本欧美一区二区在线观看| 五月天一区二区| 亚洲成人在线观看视频| 亚洲一区二区三区视频在线| 亚洲色图制服丝袜| 国产精品美女www爽爽爽| 国产日韩精品一区| 国产精品五月天| 国产精品免费视频一区| 国产精品天天看| 国产精品欧美久久久久一区二区| 久久亚区不卡日本| 国产免费成人在线视频| 中文字幕精品三区| 亚洲天堂成人在线观看| 樱桃国产成人精品视频| 亚洲18色成人| 国产在线播精品第三| 国产99久久久国产精品潘金网站| 国产精品一卡二| 99久久精品99国产精品| 在线免费不卡视频| 欧美一区二区三区四区久久 | 欧美日韩一卡二卡三卡| 在线视频欧美区| 欧美二区三区91| 久久久久久久久久美女| 国产精品免费久久久久| 亚洲在线成人精品| 免费日韩伦理电影| 国产成人三级在线观看| 色就色 综合激情| 日韩欧美亚洲国产精品字幕久久久| 欧美tickling网站挠脚心| 亚洲国产成人自拍| 亚洲一区av在线| 美女国产一区二区三区| 国产二区国产一区在线观看 | 91视视频在线直接观看在线看网页在线看| 在线视频欧美精品| 欧美xxxxx牲另类人与| 中文字幕一区二区三区乱码在线| 亚洲国产成人av网| 国产成人精品影视| 欧美无乱码久久久免费午夜一区| 欧美不卡一区二区三区四区| 伊人婷婷欧美激情| 精品一区二区三区在线播放| 99精品欧美一区二区三区小说 | 欧美国产1区2区| 亚洲成人自拍网| 成人在线一区二区三区| 欧美日韩精品一区二区天天拍小说| 久久久久亚洲蜜桃| 日韩电影免费在线看| 99久久99久久免费精品蜜臀| 精品盗摄一区二区三区| 夜夜亚洲天天久久| 99免费精品视频| 国产亚洲成aⅴ人片在线观看| 丝袜美腿亚洲综合| 色老综合老女人久久久| 久久婷婷一区二区三区| 日韩电影在线一区二区三区| 在线观看国产精品网站| 综合av第一页| 成人avav影音| 欧美国产精品一区二区三区| 老司机午夜精品| 欧美精品vⅰdeose4hd| 一区二区三区在线观看网站| 成人黄色av电影| 日本一区二区三区四区在线视频| 久久99在线观看| 欧美成人综合网站| 久久国产精品一区二区| 4hu四虎永久在线影院成人| 一区二区免费在线播放| 91免费在线视频观看| 中文无字幕一区二区三区| 精品亚洲成a人| 精品成人私密视频| 久久精品国产**网站演员| 欧美一区二区福利在线| 免费成人在线视频观看| 欧美va亚洲va香蕉在线| 国产精品亚洲专一区二区三区| 久久亚洲综合色| 东方aⅴ免费观看久久av| 中文字幕av不卡| 99久久综合狠狠综合久久| 亚洲欧美综合色| 欧美少妇一区二区| 日韩电影免费在线看| 精品久久人人做人人爰| 国产一区二区成人久久免费影院| 久久综合国产精品| 成人黄动漫网站免费app| 亚洲女性喷水在线观看一区| 欧美中文字幕一区| 久久成人综合网| 中国色在线观看另类| 欧美综合久久久| 激情六月婷婷久久| 亚洲丝袜精品丝袜在线| 欧美精品久久99| 国产超碰在线一区| 亚洲综合在线第一页| 日韩女优视频免费观看| 菠萝蜜视频在线观看一区| 一区二区三区不卡在线观看| 欧美大胆一级视频| 91网址在线看| 蜜桃av噜噜一区| 中文字幕佐山爱一区二区免费| 欧美在线高清视频| 国产一区二三区| 亚洲一区在线免费观看| 亚洲精品在线一区二区| 一本色道**综合亚洲精品蜜桃冫| 午夜精品一区二区三区电影天堂 | 欧美中文字幕亚洲一区二区va在线 | 香蕉久久夜色精品国产使用方法 | 国产偷国产偷精品高清尤物| 91久久香蕉国产日韩欧美9色| 麻豆91免费看| 一区二区三区日韩欧美| 久久婷婷色综合| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩成人高清| 成人激情开心网| 九一九一国产精品| 亚洲成人手机在线| 亚洲欧美综合网| 久久精品一区二区三区不卡| 欧美日韩三级一区二区| 99久久精品99国产精品| 国产麻豆午夜三级精品| 亚洲成在人线免费| 亚洲日韩欧美一区二区在线| 久久久777精品电影网影网| 日韩一区二区在线观看视频 | 亚洲成a人片在线观看中文| 国产精品久久久久久妇女6080 | 精品黑人一区二区三区久久 | 国产精品主播直播| 久久国产精品99久久久久久老狼| 亚洲一区二区视频| 一区二区三区四区精品在线视频| 国产精品欧美一级免费| 久久精品一区二区三区四区| 2023国产一二三区日本精品2022| 欧美一区二区福利视频| 欧美一级黄色片| 欧美成人艳星乳罩| 一区二区激情小说| 一卡二卡三卡日韩欧美| 亚洲综合视频网| 午夜精品视频一区| 日韩电影一区二区三区四区| 日韩激情中文字幕| 精品一区二区三区欧美|