ログインしたユーザーがサブスクライバーでないかどうかを確認する


8

ユーザーがサブスクライバーでない場合にのみ特定のコンテンツを表示できるコンディショナルタグはありますか?

回答:


9
<?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';
?>

15

@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クラス/オブジェクトがゲームに入ります。

このセットの他のメンバー

次にもありauthor_can( $GLOBALS['post'], 'capability' );ます。これらの関数はすべて~/wp-includes/capabilities互いに直下にあります。

何を使うのですか?

さて、どこの違いだcurrent_user_can(_FOR_BLOG)とはuser_can

  • user_can()は新しいものです(3.1以降)が、オブジェクトとしてのユーザーが必要です。そのため、現在のユーザーではなく一部のユーザーをターゲットにしたくない場合に使用できます。
  • current_user_can_*() 明らかです。
  • author_can()投稿オブジェクトに対して機能をチェックできます。このオブジェクトは、すでにDBにある投稿でのみ使用できます。したがって、これは主に特定の投稿機能へのアクセスを許可/拒否するためのものです。

1
これは私が更新する必要があると感じています。理由は次の とおりです。current_user_can()にロール名を渡さないでください。これは正しく動作することが保証されていないためです(#22624を参照)。current_user_can()コーデックスのページ からAFAIKは変更されていません。
ニコライ

@ialocin必要に応じて更新できます(2歳以上です)。あなたは基本的に正しいです。一方、ロールも機能として追加されます;)
カイザー14

1
私は怠惰であることに加えて、これは実際に発言/更新に十分であるべきだと思います...あまりにも;)
Nicolai 14

-3

これはどういう意味ですか?

global $userdata;
get_currentuserinfo();
if ( $userdata->user_level != 0 )//check user level by level ID
{
  echo 'User is a not Subscriber';
}
else
{
  echo 'User is a Subscriber';
}

さまざまなレベルのIDの詳細:http : //codex.wordpress.org/Roles_and_Capabilities#User_Levels

current_user_can()関数もあり、特定の機能を示して柔軟性を高めることができます。 http://codex.wordpress.org/Function_Reference/current_user_can


3
ユーザーレベルを使用しないでください...ここでコーデックスはそれについて言っていることである:To maintain backwards compatibility with plugins that still use the user levels system (although this is very much discouraged), the default Roles in WordPress also include Capabilities that correspond to these levels. User Levels were finally deprecated in version 3.0.
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.