macoblog

「ゲーム × プログラミング」で生きていく

MMORPGに人生捧げてみ?

【WordPress】ユーザー権限グループで条件分岐させる方法【コピペOK】

WordPress

WordPress慣れグラマー「ログインした時に権限グループで条件分岐させる方法ってすぐ忘れちゃうんだよね、誰か暇な人コピペですぐ使えるようにまとめておいてよ、ブクマするからさ」

こんな要望に応えます。
本記事では、WordPressでよく使用する「権限グループによって分岐処理させる方法」についてまとめています、コピペですぐに使えるコードを公開しておきますのでご利用ください。

スポンサードサーチ


権限グループについて【おさらい】

権限グループについて簡単におさらいしておきます。

権限グループ一覧表

権限グループ名 スラッグ 役割
管理者 administrator WordPressの全ての機能が使える
編集者 editor コンテンツに関する全ての機能が使える
投稿者 author 記事の投稿や編集、公開など最低限の機能が使える
寄稿者 contributor 記事の下書きや編集など一部の機能が使える
購読者 subscriber 閲覧のみ、編集機能は一切使えない

処理やコード内で使用するのは「スラッグ」の部分になります。

権限グループによって条件分岐させる方法【処理】

権限グループによって条件分岐させる際は下記のコードを使用しましょう。

// 権限グループのスラッグによって分岐処理
if (current_user_can('ここにスラッグ')) {
  //ここに処理を記述
}

2行目のif文「ここにスラッグ」に任意の権限グループのスラッグ(権限グループについて【おさらい】を参照)を記述し、3行目の「ここに処理を記述」に行いたい処理を記述すればOKです。

めんどくさいという方は後述している権限グループ別のコピペ用コードをご利用ください。

管理者であれば【コピペ用】

・権限グループが【管理者】の時に行いたい処理があれば
// 権限グループ【管理者】であれば
if (current_user_can('administrator')) {
  //ここに処理を記述
}

編集者であれば【コピペ用】

・権限グループが【編集者】の時に行いたい処理があれば
// 権限グループ【編集者】であれば
if (current_user_can('editor')) {
  //ここに処理を記述
}

投稿者であれば【コピペ用】

・権限グループが【投稿者】の時に行いたい処理があれば
// 権限グループ【投稿者】であれば
if (current_user_can('author')) {
  //ここに処理を記述
}

寄稿者であれば【コピペ用】

・権限グループが【寄稿者】の時に行いたい処理があれば
// 権限グループ【寄稿者】であれば
if (current_user_can('contributor')) {
  //ここに処理を記述
}

購読者であれば【コピペ用】

・権限グループが【購読者】の時に行いたい処理があれば
// 権限グループ【購読者】であれば
if (current_user_can('subscriber')) {
  //ここに処理を記述
}

スポンサードサーチ


使用例の紹介【使い方がイマイチ分からない人へ】

処理は分かった、実際にどう使えばいいの?

なんて疑問を持つ方もいると思うので、使用例を紹介しておきます。

ログイン時に条件分岐させる【よく使う】

functions.php内の処理を先ほど解説した処理で囲めば、特定の権限グループのみに適応させる事が可能です。

アクションフックを囲んでもいいですし、関数内の処理自体を囲んでも同じ結果を返します。

(小)テーマ/functions.php

// 処理を囲むパターン
function my_admin_head(){
  if (current_user_can('author')) {
    echo '<style type="text/css">#contextual-help-link-wrap{display:none;}</style>';
  }
}
add_action('admin_head', 'my_admin_head');

// アクションフックを囲むパターン
function my_admin_head(){
  echo '<style type="text/css">#contextual-help-link-wrap{display:none;}</style>';
}
if (current_user_can('author')) {
  add_action('admin_head', 'my_admin_head');
}

会員であれば見れるようにする【会員サイトあるある】

functions.php以外でも条件分岐は使えます、例えば会員サイトを作ったとしてログインした会員(購読者)にだけ表示させたいものがある時は下記のようにすればOK。

条件分岐させたいページ(固定ページなど)

// 権限グループ【購読者】にしか表示させない
if (current_user_can('subscriber')) {
  echo '<p>購読者であればこのテキストが表示されます</p>'
}

ログインしているかどうかならis_user_logged_in()を使えばいいという話は置いておいて、ビュー側のファイルでも使えるんですよということだけ理解してもらえればOKです。

終わりに

本当によく使う処理なのでこれからWordPressを勉強する方は覚えておいて損なしです(備忘録として残しておきます)

クライアント側のアカウントを権限グループで管理する時とかは便利なんですよね、「投稿者」をクライアントのアカウント専用権限とかにしたり。

そうすれば制限をかける処理(非表示)を権限グループで条件分岐させるだけで余計なものをクライアントに触らせない・見せないことが可能になるので。

ってな感じで締めたいと思います。