倉藍(lán)

          日記本

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            23 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks
          本文詳細(xì)介紹了如何查詢Wordpress某一篇文章作者的文章以及其權(quán)限,附帶介紹了Wordpress的用戶權(quán)限系統(tǒng),指出了網(wǎng)上到處復(fù)制的某些文章存在的問題。

          一、查詢Wordpress某篇文章作者的全部文章或部分最新文章

          1.獲取當(dāng)前文章作者的ID

          1. get_post($id)->post_author  

          這才是獲取Wordpress當(dāng)前文章作者ID的正確方式,網(wǎng)上到處亂傳的那篇名叫“WordPress 通過文章ID獲取文章標(biāo)題、內(nèi)容等信息”的文章里的說法是錯誤的,雖然是錯誤的,但是卻被廣泛的Ctrl+C然后Ctrl+V,以訛傳訛,不可思議啊。

          另外get_post($id)->可以獲取與文章有關(guān)的許多信息,轉(zhuǎn)述如下:

          1. post_author:(整數(shù))文章作者的編號    
          2. post_data:(字符)文章發(fā)表的日期和時間(YYYY-MM-DD HH-MM-SS)    
          3. post_data_gmt:(字符)文章發(fā)表的格林尼治標(biāo)準(zhǔn)時間(GMT) (YYYY-MM-DD HH-MM-SS)    
          4. post_content:(字符)文章內(nèi)容    
          5. post_title:(字符)文章標(biāo)題    
          6. post_category:(整數(shù))文章類別的編號。注意:該值在WordPress 2.1之后的版本總為0。定義文章的類別時可使用 get_the_category()函數(shù)。    
          7. post_excerpt:(字符)文章摘要    
          8. post_status:(字符)文章狀態(tài)(publish|pending|draft|private|static|object|attachment|inherit|future)    
          9. comment_status:(字符)評論狀態(tài)(open|closed|registered_only)    
          10. ping_status:(字符)pingback/trackback狀態(tài)(open|closed)    
          11. post_password:(字符)文章密碼    
          12. post_name:(字符)文章的URL嵌套    
          13. to_ping:(字符)要引用的URL鏈接    
          14. pinged:(字符)引用過的鏈接    
          15. post_modified:(字符)文章最后修改時間(YYYY-MM-DD HH-MM-SS)    
          16. post_modified_gmt:(字符)文章最后修改GMT時間(YYYY-MM-DD HH-MM-SS)    
          17. post_parent:(整數(shù))父級文章編號(供附件等)    
          18. guid:(字符)文章的一個鏈接。注意:不能將GUID作為永久鏈接(雖然在2.5之前的版本中它的確被當(dāng)作永久鏈接),也不能將它作為文章的可用鏈接。GUID是一種獨有的標(biāo)識符,只是目前恰巧成為文章的一個鏈接。    
          19. post_type:(字符)(日志 | 頁面 | 附件)    
          20. post_mime_type:(字符)Mime類型(供附件等)    
          21. comment_count:(整數(shù))評論總數(shù)  

           

          2.Wordpress查詢文章作者的全部文章/部分文章的主要函數(shù)及輸出

          1. <?php   
          2. global $wpdb;   
          3. //$current_user->ID的話,查詢的就是當(dāng)前登錄的用戶,所以是不對的;   
          4. $author_id = get_post($id)->post_author;   
          5. $sql =  "SELECT * FROM $wpdb->posts WHERE post_status IN ('publish','static') AND post_author = '$author_id' AND post_type ='post'LIMIT 5" ; //查詢作者文章數(shù)量   
          6. $posts= $wpdb->get_results($sql);   
          7.     foreach ($posts as $post) {   
          8.   
          9. echo'<li><a href="';the_permalink();echo '" rel="twipsy" title="';the_title();echo '">'. mb_strimwidth(get_the_title(), 0, 20,"...").'</a></li>';   
          10. }   
          11. ?>  

          只在無序列表ul里輸出一個列表,格式是截斷的標(biāo)題加上鏈接,查詢了僅僅5篇,多了的話,沒什么用,這里僅僅是測試。

          二、Wordpress用戶角色與權(quán)限

          WordPress用戶角色或者Wordpress用戶權(quán)限說是從Wordpress2.0開始,逐漸的完善起來的,默認(rèn)分以下幾種的:

          1. Super Admin超級管理員-針對Wordpress多站點環(huán)境,一般人很少接觸,所以很少有人提及;   
          2. Administrator管理員 -擁有特定的某一個站點的所有管理權(quán)限;   
          3. Editor編輯 -發(fā)表文章、編輯文章、并能編輯其他人的文章等等;   
          4. Author作者-能夠發(fā)布和編輯自己的文章;   
          5. Contributor貢獻(xiàn)者或者叫投稿者 -能夠撰寫和編輯自己的文章、但不能發(fā)布;   
          6. Subscriber訂閱者 -能夠查看評論/添加評論/查看文章,等等。  

           

          當(dāng)新用戶在你的Wordpress站點上注冊了的時候(假設(shè)已經(jīng)開啟注冊),他的默認(rèn)角色可以在Wordpress后臺-->設(shè)置-->常規(guī)頁面設(shè)置。

          下面的用戶角色以及對應(yīng)的權(quán)限能力等級對照表翻譯自Wordpress官方網(wǎng)站,所在頁面:

          http://codex.wordpress.org/Roles_and_Capabilities#Capabilities

           

          角色超級管理員管理員(單個站點)編輯作者貢獻(xiàn)者(投稿者)訂閱者
          manage_network




          manage_sites




          manage_network_users




          manage_network_plugins




          manage_network_themes




          manage_network_options




          unfiltered_html




          角色超級管理員管理員(單個站點)編輯作者貢獻(xiàn)者(投稿者)訂閱者
          activate_plugins



          create_users僅單個站點



          delete_plugins



          delete_themes僅單個站點



          delete_users



          edit_files



          edit_plugins僅單個站點



          edit_theme_options



          edit_themes僅單個站點



          edit_users僅單個站點



          export



          import



          角色超級管理員管理員(單個站點)編輯作者貢獻(xiàn)者(投稿者)訂閱者
          install_plugins僅單個站點



          install_themes僅單個站點



          list_users



          manage_options



          promote_users



          remove_users



          switch_themes



          update_core僅單個站點



          update_plugins僅單個站點



          update_themes僅單個站點



          edit_dashboard



          角色超級管理員管理員(單個站點)編輯作者貢獻(xiàn)者(投稿者)訂閱者
          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


          角色超級管理員管理員(單個站點)編輯作者貢獻(xiàn)者(投稿者)訂閱者
          edit_published_posts

          upload_files

          create_product

          publish_posts

          delete_published_posts

          edit_posts
          delete_posts
          閱讀
          角色超級管理員管理員(單個站點)編輯作者貢獻(xiàn)者(投稿者)訂閱者

           

          1.查詢Wordpress文章作者的角色

          在本文的開頭,我們已經(jīng)知道如何獲取Wordpress某一篇文章的作者ID了,現(xiàn)在就來獲取其角色:

          1. $user_id=get_post($id)->post_author;   
          2. if(user_can($user_id,'install_plugins')){echo'管理員';}   
          3. 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'貢獻(xiàn)者';}elseif(user_can($user_id,'read')){echo'訂閱者';}   

          管理員和編輯都能publish_posts,但是這里的判斷有先后順序,所以不用擔(dān)心這個問題,這個判斷是不錯的!

          WordPress某篇文章的作者是否有某權(quán)限的推薦函數(shù)

          1. if ( author_can( $post, $capability ) ) {      
          2. // 如果文章 $post 的作者擁有 $capability 時執(zhí)行的動作      
          3. }    

          這個相對簡單一些,可以直接去判斷,所以我再某個項目中最終使用了這個函數(shù)。參數(shù)中的$post可以是文章自身,也可以是文章ID,使用起來很方便!

          1. if(author_can($post->ID,'install_plugins'))   
          2. {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當(dāng)前登錄者的權(quán)限/權(quán)限等級

          這個函數(shù)是經(jīng)常被使用的,使用的是權(quán)限等級,Wordpress官方已經(jīng)聲明:從Wordpress3.0,已經(jīng)廢棄了對這個權(quán)限等級制度的支持,所以,網(wǎng)上到處亂飛的復(fù)制文章,謹(jǐn)慎對待吧!

          1. <?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 '貢獻(xiàn)者';}elseif(current_user_can('level_0')){ echo '訂閱者';}   
          2.     ?>  

           

          posted on 2013-12-05 10:49 cangshi 閱讀(2433) 評論(0)  編輯  收藏 所屬分類: php
          主站蜘蛛池模板: 建始县| 河源市| 攀枝花市| 巩留县| 济源市| 云林县| 榆社县| 肇源县| 张北县| 永善县| 广宁县| 三门县| 沽源县| 弥渡县| 来宾市| 庆安县| 海淀区| 綦江县| 灵璧县| 通海县| 阿尔山市| 华蓥市| 诏安县| 安仁县| 福贡县| 清水河县| 光山县| 施秉县| 师宗县| 长阳| 保亭| 建湖县| 嘉定区| 汾西县| 哈尔滨市| 石柱| 美姑县| 松滋市| 宁化县| 新巴尔虎左旗| 仲巴县|