この記事をシェアする

下北沢オープンソースCafeのWordPress部のUSTREAMを聞いていた中で出てきた「ユーザー」による条件分岐について、その場で思いつく関数は出てきたのですが、短文では情報を提供しきれなかったので書いておきます。

WordPressにログインしているかどうか

<?php
if ( is_user_logged_in() ) { // ログインしているとき
	echo 'Welcome, registered user!';
} else { // そうじゃないとき
	echo 'Welcome, visitor!';
}
?>

ユーザー権限による分岐

※ユーザーレベルによる分岐方法もありますが、WordPress 3.0以降で非推奨となっていますので、ここでは紹介しません。

<?php
if ( current_user_can('moderate_comments') ) { // コメント承認の権限があるなら
	echo 'The current user can moderate comments';
}
?>

日本語Codexでは引数に「権限グループ(Role)」でも可能なように書いてありいますが、本家Codexでは「権限(Capabilities)」のみとなっています。
実際に wp-includes/capabilities.php のコメント見てみると $capability Capability or role name となっていて Role でも大丈夫なようで、実際にWordPress3.4.2では

<?php
if ( current_user_can('subscriber') ) { // 購読者(Subscriber) = subscriber なら
	echo 'Subscriber!';
}
?>

でも true を返しました。
あわせてユーザー権限についても参照してください。

各ユーザー情報による分岐

もっと細かく、ユーザーIDや名前などのユーザー情報で分岐を行う場合。

<?php global $current_user;
get_currentuserinfo();
	if ($current_user->ID == "1" ) {
		echo 'User display name: ' . $current_user->display_name . "n";
	}
?>

元々、get_currentuserinfo() はログインしているユーザーの情報を取得する関数です。条件分岐以外にも使えます。また、Codexにあるように、ほとんどの情報はグローバル変数に格納されていますので、直接参照することも可能です。

他にも、ユーザーIDを取得する get_current_user_id などがあります。

この記事をシェアする