東日本橋の制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

WordPress

【WordPress】 幾つかのフック内で、ユーザー権限グループが取得できなかったりする

投稿日:

この記事は2年以上前ですので、内容が古い可能性があります

getuserrole
大変ご無沙汰してしまいました。

かなり濃いめのWordpressのカスタマイズ案件を連続で担当しておりました。
リバビリを兼ねて、お仕事案件からのスピンアウト子ネタをご紹介します。

ユーザーの権限グループを取得なんて簡単! のはずが...

検索するとすぐに出てくるスニペットは以下の感じと思います。


$user = wp_get_current_user();
$user_role = array_shift($user->roles);

今まではこれで事足りてましたが、
この方法だと、幾つかのfilterフック内で取得できなかったのです。
たとえば、以下の感じ。

  • 'admin_init'に引っ掛けた関数内で、○
  • 'post_row_actions'に引っ掛けた関数内で、×
  • 'admin_body_class'に引っ掛けた関数内で、×
  • 'admin_footer'に引っ掛けた関数内で、× ...

結構使えない場面が多い...なら、作る

そこで、Userオブジェクトをいろんな場面で出力してみて、これならどこでも取得可能(な筈)!って関数をつくってみました。
$user_id未指定なら、現在のユーザーの権限グループ、指定すれば特定ユーザーの権限グループを返します。


/**
 * ユーザーの権限グループを取得
 *
 * @param int $user_id
 * @return string
 */
function pm_get_user_role( $user_id = '' ){
	if( $user_id == '' ){
		$user = wp_get_current_user();
	} else {
		$user = new WP_User($user_id);
	}
	$user_role = array_shift($user->roles);
	// got user_role ?
	if($user_role == ''){
		$user_role = array_keys($user->caps)[0];//try the other way.
	}
	return $user_role;
}

コメント、アドバイス等々、お待ちしております!

この記事をシェアする:
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

私たちと一緒に働きませんか?

「【WordPress】 幾つかのフック内で、ユーザー権限グループが取得できなかったりする」はいかがでしたか?
株式会社プレスマンでは、 WordPressが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。 まずは募集職種をご覧の上、お気軽にお問い合わせください。 あなたとお会いできるのを楽しみにしています。

採用情報を見る

-WordPress

Copyright© PRESSMAN*Tech , 2021 All Rights Reserved Powered by STINGER.