2013-10-26 59 views
1

試圖根據角色在WordPress中限制對管理區域的訪問3.6Wordpress根據角色限制訪問管理區域

請嘗試以下操作。這樣可以防止沒有管理員訪問權限的人員,但不能保護我的自定義角色「超級用戶」這不斷重定向到主頁。

function prevent_admin_access() 
{ 
if (false !== strpos(strtolower($_SERVER['REQUEST_URI']), '/wp-admin') && !current_user_can('administrator') && !current_user_can('Super User')) 
wp_redirect(home_url()); 
} 
add_action('init', 'prevent_admin_access', 0); 
+0

修正了它在中間需要一個下劃線的「超級用戶」角色 - 它不喜歡空間 – user2903829

+1

看到我的答案,爲什麼你不應該這樣做 – frnhr

回答

1

add_role()添加新角色您(或插件)定義的「角色名稱」和「角色顯示名稱」(http://codex.wordpress.org/Function_Reference/add_role)。

current_user_can()需要名稱,不顯示名稱,即「區分大小寫的,而應該是所有的小寫字母」(見http://codex.wordpress.org/Function_Reference/current_user_can

在你的情況我猜測這將是

... && !current_user_can('super_user') ... 

編輯:

現在我只看到你正在通過一個角色,而不是能力current_user_can()。這將起作用(至少在WP 3.6),但不這樣做。

從文檔(以上鍊接):

不要傳遞一個角色名來current_user_can(),因爲這是不能保證正常工作(見#22624)。相反,您可能希望嘗試AppThemes提供的check user role function

我建議你使用一些只有管理員和你的超級用戶有的功能,可能是update_core或類似的東西。