I need to somehow check someone's role with only their id.
I have found the current_user_can()
check. But this only works for people that are logged in. How would I check for this if that user isn't the current user? I am using a phone order system but that uses the admin/specific account to order for other people.
To check if a user has a specific role, you have to get a list of their roles and see if the role is listed there. $user_meta=get_userdata($user_id); $user_roles=$user_meta->roles; if (in_array("subscriber", $user_roles)){} Results in a role check for subscriber.
How to check whether a user is administrator or not. To check if the currently logged in user is an administrator, use the current_user_can function. To check if a user is an administrator, you can specify the capability as an argument of current_user_can function (e.g. manage_options).
To check if a user has a specific role, you have to get a list of their roles and see if the role is listed there.
Example function:
function user_has_role($user_id, $role_name)
{
$user_meta = get_userdata($user_id);
$user_roles = $user_meta->roles;
return in_array($role_name, $user_roles);
}
Example usage:
$user_is_subscriber = user_has_role(get_current_user_id(), 'subscriber');
The info you need to know before you proceed:
Let's get all the roles and check if the role you're interested in is there or now.
<?php
// Get the user object.
$user = get_userdata( $user_id );
// Get all the user roles as an array.
$user_roles = $user->roles;
// Check if the role you're interested in, is present in the array.
if ( in_array( 'subscriber', $user_roles, true ) ) {
// Do something.
echo 'YES, User is a subscriber';
}
hello try this optimal code
if (get_userdata($post->post_author)->roles[0] == 'your_specified_role'){
echo 'role exist';
}else{
echo 'role does not exist';
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With