本文詳細介紹了如何查詢Wordpress某一篇文章作者的文章以及其權限,附帶介紹了Wordpress的用戶權限系統,指出了網上到處復制的某些文章存在的問題。
一、查詢Wordpress某篇文章作者的全部文章或部分最新文章
1.獲取當前文章作者的ID
- get_post($id)->post_author
這才是獲取Wordpress當前文章作者ID的正確方式,網上到處亂傳的那篇名叫“WordPress 通過文章ID獲取文章標題、內容等信息”的文章里的說法是錯誤的,雖然是錯誤的,但是卻被廣泛的Ctrl+C然后Ctrl+V,以訛傳訛,不可思議啊。
另外get_post($id)->可以獲取與文章有關的許多信息,轉述如下:
- post_author:(整數)文章作者的編號
- post_data:(字符)文章發表的日期和時間(YYYY-MM-DD HH-MM-SS)
- post_data_gmt:(字符)文章發表的格林尼治標準時間(GMT) (YYYY-MM-DD HH-MM-SS)
- post_content:(字符)文章內容
- post_title:(字符)文章標題
- post_category:(整數)文章類別的編號。注意:該值在WordPress 2.1之后的版本總為0。定義文章的類別時可使用 get_the_category()函數。
- post_excerpt:(字符)文章摘要
- post_status:(字符)文章狀態(publish|pending|draft|private|static|object|attachment|inherit|future)
- comment_status:(字符)評論狀態(open|closed|registered_only)
- ping_status:(字符)pingback/trackback狀態(open|closed)
- post_password:(字符)文章密碼
- post_name:(字符)文章的URL嵌套
- to_ping:(字符)要引用的URL鏈接
- pinged:(字符)引用過的鏈接
- post_modified:(字符)文章最后修改時間(YYYY-MM-DD HH-MM-SS)
- post_modified_gmt:(字符)文章最后修改GMT時間(YYYY-MM-DD HH-MM-SS)
- post_parent:(整數)父級文章編號(供附件等)
- guid:(字符)文章的一個鏈接。注意:不能將GUID作為永久鏈接(雖然在2.5之前的版本中它的確被當作永久鏈接),也不能將它作為文章的可用鏈接。GUID是一種獨有的標識符,只是目前恰巧成為文章的一個鏈接。
- post_type:(字符)(日志 | 頁面 | 附件)
- post_mime_type:(字符)Mime類型(供附件等)
- comment_count:(整數)評論總數
2.Wordpress查詢文章作者的全部文章/部分文章的主要函數及輸出
- <?php
- global $wpdb;
- //$current_user->ID的話,查詢的就是當前登錄的用戶,所以是不對的;
- $author_id = get_post($id)->post_author;
- $sql = "SELECT * FROM $wpdb->posts WHERE post_status IN ('publish','static') AND post_author = '$author_id' AND post_type ='post'LIMIT 5" ; //查詢作者文章數量
- $posts= $wpdb->get_results($sql);
- foreach ($posts as $post) {
-
- echo'<li><a href="';the_permalink();echo '" rel="twipsy" title="';the_title();echo '">'. mb_strimwidth(get_the_title(), 0, 20,"...").'</a></li>';
- }
- ?>
只在無序列表ul里輸出一個列表,格式是截斷的標題加上鏈接,查詢了僅僅5篇,多了的話,沒什么用,這里僅僅是測試。
二、Wordpress用戶角色與權限
WordPress用戶角色或者Wordpress用戶權限說是從Wordpress2.0開始,逐漸的完善起來的,默認分以下幾種的:
- Super Admin超級管理員-針對Wordpress多站點環境,一般人很少接觸,所以很少有人提及;
- Administrator管理員 -擁有特定的某一個站點的所有管理權限;
- Editor編輯 -發表文章、編輯文章、并能編輯其他人的文章等等;
- Author作者-能夠發布和編輯自己的文章;
- Contributor貢獻者或者叫投稿者 -能夠撰寫和編輯自己的文章、但不能發布;
- Subscriber訂閱者 -能夠查看評論/添加評論/查看文章,等等。
當新用戶在你的Wordpress站點上注冊了的時候(假設已經開啟注冊),他的默認角色可以在Wordpress后臺-->設置-->常規頁面設置。
下面的用戶角色以及對應的權限能力等級對照表翻譯自Wordpress官方網站,所在頁面:
http://codex.wordpress.org/Roles_and_Capabilities#Capabilities
角色 | 超級管理員 | 管理員(單個站點) | 編輯 | 作者 | 貢獻者(投稿者) | 訂閱者 |
---|
manage_network | 是 |
|
|
|
|
|
manage_sites | 是 |
|
|
|
|
|
manage_network_users | 是 |
|
|
|
|
|
manage_network_plugins | 是 |
|
|
|
|
|
manage_network_themes | 是 |
|
|
|
|
|
manage_network_options | 是 |
|
|
|
|
|
unfiltered_html | 是 |
|
|
|
|
|
角色 | 超級管理員 | 管理員(單個站點) | 編輯 | 作者 | 貢獻者(投稿者) | 訂閱者 |
---|
activate_plugins | 是 | 是 |
|
|
|
|
create_users | 是 | 僅單個站點 |
|
|
|
|
delete_plugins | 是 | 是 |
|
|
|
|
delete_themes | 是 | 僅單個站點 |
|
|
|
|
delete_users | 是 | 是 |
|
|
|
|
edit_files | 是 | 是 |
|
|
|
|
edit_plugins | 是 | 僅單個站點 |
|
|
|
|
edit_theme_options | 是 | 是 |
|
|
|
|
edit_themes | 是 | 僅單個站點 |
|
|
|
|
edit_users | 是 | 僅單個站點 |
|
|
|
|
export | 是 | 是 |
|
|
|
|
import | 是 | 是 |
|
|
|
|
角色 | 超級管理員 | 管理員(單個站點) | 編輯 | 作者 | 貢獻者(投稿者) | 訂閱者 |
---|
install_plugins | 是 | 僅單個站點 |
|
|
|
|
install_themes | 是 | 僅單個站點 |
|
|
|
|
list_users | 是 | 是 |
|
|
|
|
manage_options | 是 | 是 |
|
|
|
|
promote_users | 是 | 是 |
|
|
|
|
remove_users | 是 | 是 |
|
|
|
|
switch_themes | 是 | 是 |
|
|
|
|
update_core | 是 | 僅單個站點 |
|
|
|
|
update_plugins | 是 | 僅單個站點 |
|
|
|
|
update_themes | 是 | 僅單個站點 |
|
|
|
|
edit_dashboard | 是 | 是 |
|
|
|
|
角色 | 超級管理員 | 管理員(單個站點) | 編輯 | 作者 | 貢獻者(投稿者) | 訂閱者 |
---|
moderate_comments | 是 | 是 | 是 |
|
|
|
manage_categories | 是 | 是 | 是 |
|
|
|
manage_links | 是 | 是 | 是 |
|
|
|
edit_others_posts | 是 | 是 | 是 |
|
|
|
edit_pages | 是 | 是 | 是 |
|
|
|
edit_others_pages | 是 | 是 | 是 |
|
|
|
edit_published_pages | 是 | 是 | 是 |
|
|
|
publish_pages | 是 | 是 | 是 |
|
|
|
delete_pages | 是 | 是 | 是 |
|
|
|
delete_others_pages | 是 | 是 | 是 |
|
|
|
delete_published_pages | 是 | 是 | 是 |
|
|
|
delete_others_posts | 是 | 是 | 是 |
|
|
|
delete_private_posts | 是 | 是 | 是 |
|
|
|
edit_private_posts | 是 | 是 | 是 |
|
|
|
閱讀_private_posts | 是 | 是 | 是 |
|
|
|
delete_private_pages | 是 | 是 | 是 |
|
|
|
edit_private_pages | 是 | 是 | 是 |
|
|
|
閱讀_private_pages | 是 | 是 | 是 |
|
|
|
角色 | 超級管理員 | 管理員(單個站點) | 編輯 | 作者 | 貢獻者(投稿者) | 訂閱者 |
---|
edit_published_posts | 是 | 是 | 是 | 是 |
|
|
upload_files | 是 | 是 | 是 | 是 |
|
|
create_product | 是 | 是 | 是 | 是 |
|
|
publish_posts | 是 | 是 | 是 | 是 |
|
|
delete_published_posts | 是 | 是 | 是 | 是 |
|
|
edit_posts | 是 | 是 | 是 | 是 | 是 |
|
delete_posts | 是 | 是 | 是 | 是 | 是 |
|
閱讀 | 是 | 是 | 是 | 是 | 是 | 是 |
角色 | 超級管理員 | 管理員(單個站點) | 編輯 | 作者 | 貢獻者(投稿者) | 訂閱者 |
---|
1.查詢Wordpress文章作者的角色
在本文的開頭,我們已經知道如何獲取Wordpress某一篇文章的作者ID了,現在就來獲取其角色:
- $user_id=get_post($id)->post_author;
- if(user_can($user_id,'install_plugins')){echo'管理員';}
- elseif(user_can($user_id,'edit_others_posts')){echo'管理編輯';}elseif(user_can($user_id,'publish_posts')){echo'作者';}elseif(user_can($user_id,'delete_posts')){echo'貢獻者';}elseif(user_can($user_id,'read')){echo'訂閱者';}
管理員和編輯都能publish_posts,但是這里的判斷有先后順序,所以不用擔心這個問題,這個判斷是不錯的!
WordPress某篇文章的作者是否有某權限的推薦函數:
- if ( author_can( $post, $capability ) ) {
- // 如果文章 $post 的作者擁有 $capability 時執行的動作
- }
這個相對簡單一些,可以直接去判斷,所以我再某個項目中最終使用了這個函數。參數中的$post可以是文章自身,也可以是文章ID,使用起來很方便!
- if(author_can($post->ID,'install_plugins'))
- {echo'<span class="label label-warning role">管理員</span>';}elseif(author_can($post->ID,'edit_others_posts')){echo'管理編輯';}elseif(author_can($post->ID,'publish_posts')){echo'作者';}elseif(author_can($post->ID,'delete_posts')){echo'投稿者';}elseif(author_can($post->ID,'read')){echo'訂閱者';}
2.Wordpress當前登錄者的權限/權限等級
這個函數是經常被使用的,使用的是權限等級,Wordpress官方已經聲明:從Wordpress3.0,已經廢棄了對這個權限等級制度的支持,所以,網上到處亂飛的復制文章,謹慎對待吧!
- <?php if(current_user_can('level_10')){ echo '管理員';}elseif(current_user_can('level_7')){ echo '管理編輯';}elseif(current_user_can('level_4')){ echo '作者';}elseif(current_user_can('level_4')){ echo '貢獻者';}elseif(current_user_can('level_0')){ echo '訂閱者';}
- ?>