回答:
これはuser_roles()およびarray_search()を使用すると非常に簡単です。以下は、名前に一致するロールがある場合にロールIDを返し、そうでない場合にFALSEを返す関数です。
function get_role_by_name($name) {
$roles = user_roles();
return array_search($name, $roles);
}
// Sample usage
$rid = get_role_by_name('administrator');
1つのライナーは次のようになります。
$rid = array_search('administrator', user_roles());
ロールのマシン名がわかっているので、を使用するだけで十分user_role_load_by_name()
です。
if ($role = user_role_load_by_name('Role Name')) {
// The role ID is in $role->rid.
}
ロールが存在しない可能性がある場合...
$role = user_role_load_by_name('Role Name');
$role_id = $role ? $role->rid : NULL;
ロールとそのIDを識別する最良の方法は、SQLからです。SQLエディターでこのクエリを実行します。
select * from roles;
そして、IDと重みを含むロールのリストを取得します。