問題描述
是否有任何條件標籤,只有當使用者不是使用者時,才允許我顯示某些內容?
最佳解決方案
<?php
global $current_user; // Use global
get_currentuserinfo(); // Make sure global is set, if not set it.
if ( ! user_can( $current_user, "subscriber" ) ) // Check user object has not got subscriber role
echo 'User is a not Subscriber';
else
echo 'User is a Subscriber';
?>
次佳解決方案
一個更簡單的方法,比 @Brady 顯示你是使用 current_user_can:
if ( current_user_can( 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again!";
MU
還有一個等同於 MU 安裝的命名為 current_user_can_for_blog:
global $blog_id;
if ( current_user_can_for_blog( $blog_id 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again on this blog!";
幕後
當檢視功能 for single 或 MU installations 的功能的來源時,您將看到,兩者基本上都依賴於 wp_get_current_user(),然後檢查 has_cap 。現在,如果你想看看帽子來自哪裡,那麼 WP_User 類/物件進入遊戲。
這套的其他成員
那麼還有 author_can( $GLOBALS['post'], 'capability' ); 。所有這些功能都在~/wp-includes/capabilities 之內。
什麼時候用什麼?
現在,current_user_can(_FOR_BLOG)和 user_can 的區別在哪裡?
-
user_can()是較新的 (自 3.1 以來),但需要使用者作為物件。因此,您可以在不想將目標使用者定位到某些使用者的情況下使用它。 -
current_user_can_*()是顯而易見的。 -
author_can()允許您檢查 Post 物件的功能。此物件僅適用於已在 DB 中的帖子。所以主要是允許/拒絕訪問特定的帖子功能。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。