大変ご無沙汰してしまいました。
かなり濃いめの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;
}
コメント、アドバイス等々、お待ちしております!