ユーザーが購読者ではない場合にのみ特定のコンテンツを表示できるようにする条件付きタグはありますか。
<?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をインストールしたものと同等のものがあり、 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!";
関数{ 単一 または MUインストール のソースを見ると、基本的にどちらも wp_get_current_user()
に依存しているかどうかを確認しhas_cap
。さて、キャップがどこから来たのか見たいのであれば、 WP_User
class/objectがゲームに登場します。
それからauthor_can( $GLOBALS['post'], 'capability' );
もあります。これらすべての関数は、互いのすぐ下の~/wp-includes/capabilities
内にあります。
さて、current_user_can(_FOR_BLOG)
と user_can
の違いはどこにありますか?
user_can()
は新しいものです(3.1以降)が、オブジェクトとしてユーザーが必要です。そのため、現在のユーザーをターゲットにしたくない場合に、 some usersのような場合に使用できます。current_user_can_*()
は明らかです。author_can()
はpostオブジェクトに対して機能をチェックすることを可能にします。このオブジェクトはすでにDBにある投稿に対してのみ利用可能です。そのため、主に特定の投稿機能へのアクセスを許可または拒否するためのものです。