2013-04-05 74 views
0

我想要完成的背景......目前,我已經在Codeigniter上創建了一個迷你CMS來編輯Web應用的一些數據庫內容。目前它沒有密碼保護,因爲它仍在開發中。我想將其整合到我的WordPress安裝中,以便我的客戶端不必登錄CMS WordPress。只允許登錄WordPress管理員訪問頁面(WordPress核心之外)

我在哪裏至今是:

  1. 我創建了一個自定義的WP admin_menu(通過add_menu_page
  2. 我有CMS可見/管理員菜單中的選項卡的iframe工作。

我現在需要做的只是允許訪問這些CMS頁面,如果用戶被認證爲WordPress管理員。

如果你想知道我的目錄結構:

/ (Codeigniter installed on root) 
/blog/ (WordPress Install) 
/blog/cms/ (CMS that is talking to Codeigniter) 

預先感謝您!

更新:由於尚未在答案中得到解答,我需要知道如何在WordPress系統之外執行WordPress功能。

回答

1

我已經想通了。下面的代碼:

define('WP_USE_THEMES', false); 
require('../wp-blog-header.php'); 
if(!is_user_logged_in()) 
{ 
    exit('You do not have access'); 
} 
3

您可能想要使用WordPress's current_user_can()函數來確認用戶至少有一個通常與管理員用戶關聯的能力,或者是Administrator角色的成員。

根據該codex頁面,這應該工作,以測試基於角色的管理員,雖然我不能確認這個抱歉。過去我肯定使用過這種方法來驗證用戶是否具有一定的功能。

<?php current_user_can( 'Administrator' ); ?> 

編輯:若要從不同的網站,WP用戶進行身份驗證,使用WP憑證,this answer over on Wordpress.stackexchange介紹如何使用WP內置的XMLRPC服務。答案是在從servlet進行身份驗證的環境中編寫的,但WP XMLRPC服務的實現可以在客戶端(而不是您的站點的兩個單獨的後端)之間的JavaScript中實現,因此可能在您的方案中更有用。

答案包括一個預編寫的插件,用於處理來自WP服務器的遠程客戶端的特定認證請求...但請注意關於使用令牌而不是通過線路傳遞信用的問題下面的註釋研究「nonce」,如果你不熟悉這些... WP可以爲你創建這些)。

+0

的[食品](http://codex.wordpress.org/Function_Reference/current_user_can)建議使用能力,而不是一個角色的名字:'不要通過自定義角色名稱current_user_can() ,因爲這不能保證能夠正常工作。# – RRikesh 2013-04-05 06:03:42

+2

@rrikesh你錯過了對**自定義角色名稱的重視。 「管理員」不是自定義角色名稱,因此您引用的建議不適用於此處。這是開箱即用的角色定義http://codex.wordpress.org/Roles_and_Capabilities#Administrator – Sepster 2013-04-05 06:36:42

+0

是的,的確如此。 – RRikesh 2013-04-05 06:38:26