現在のユーザーの役割に基づいて、ユーザープロファイルページのフィールドラベルに異なるテキストを表示するという、かなり具体的な要件があります。現在の使用が「作者」であるかどうかを確認する方法を理解することはできません。
私はのような機能を探しています:
is_user_in_role($user, "author");
これは非常に単純なことだと思いますが、答えがないまま長い間探しすぎたので、ここに投稿することにしました。
現在のユーザーだけに必要な場合は current_user_can()
はロールと機能の両方を受け入れます。
_ update _ :current_user_can()
にロール名を渡しても正しく動作することは保証されなくなりました( #22624 を参照)。代わりに、あなたはユーザロールをチェックしたいかもしれません:
$user = wp_get_current_user();
if ( in_array( 'author', (array) $user->roles ) ) {
//The user has the "author" role
}
ユーザーのIDを使用してユーザーの役割を取得する方法を探していました。これが私が思いついたものです:
function get_user_roles_by_user_id( $user_id ) {
$user = get_userdata( $user_id );
return empty( $user ) ? array() : $user->roles;
}
そうすれば、is_user_in_role()
関数は次のように実装できます。
function is_user_in_role( $user_id, $role ) {
return in_array( $role, get_user_roles_by_user_id( $user_id ) );
}
新しいユーザーオブジェクトを作成することもできます。
$user = new WP_User( $user_id );
if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'Some_role', $user->roles ) ) {
return true;
}
どのバージョンのget_user_roles_by_user_id
が削除されたのかはわかりませんが、使用できなくなりました。
これは、柔軟性を高めるためにユーザーとロールを受け入れる関数です。
function my_has_role($ user、$ role){ $ roles = $ user-> roles; in_array($ role、(array)$ user-> roles); } if(my_has_role($ user、 'some_role')){ //何をするか }