web-dev-qa-db-ja.com

ログインしているユーザーが購読者ではないかどうかを調べる

ユーザーが購読者ではない場合にのみ特定のコンテンツを表示できるようにする条件付きタグはありますか。

8
Nasir Zia
<?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';
?>
9
Brady

@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!";

カーテンの後ろ

関数{ 単一 または 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にある投稿に対してのみ利用可能です。そのため、主に特定の投稿機能へのアクセスを許可または拒否するためのものです。
15
kaiser