問題描述

是否有任何條件標籤,只有當用户不是用户時,才允許我顯示某些內容?

最佳解決方案

<?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 singleMU 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。