PRESSMAN*Tech(プレスマンテック)

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

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

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;
}

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

投稿者:hiroshi
hiroshi

hiroshi の紹介

DTP、Webデザイン、プログラミングをへて、サービス企画に。
Wordpressのことなら何でもご相談ください。

コメントは受け付けていません。

▲ 先頭へ戻る