Cómo comprobar el rol de un usuario WordPress
En WordPress los usuarios pueden tener asiganados roles (autor, editor, administrador, etc) y compentencias (capabilities: editar posts, subir imágenes, etc). Cada usuario puede tener más de un rol asignado y esta información se alamacena en la propiedad roles
del objeto WP_User:
//Obtener el objeto WP_User del usuario actual
$user = wp_get_current_user();
//Ver todos los roles asignados
var_dump($user->roles);
En $user->roles
tendremos un array con todos los roles del usuario. Así que se puede comprobar el rol de un usuario fácilmente con in_array. Por ejemplo, si queremos comprobar si el usuario actual es editor podríamos hacer:
$user = wp_get_current_user();
if( ! empty( $user ) && in_array( "editor", (array) $user->roles ) ) {
//El usuario actual es editor
}
Si en lugar de comprobar el rol del usuario actual queremos hacerlo con otro usuario cualquiera, por ejemplo con el usuario de ID = 125:
$user = get_userdata( 125 );
if( ! empty( $user ) && in_array( "editor", (array) $user->roles ) ) {
//El usuario actual es editor
}
Y por cierto, nunca utilices current_user_can para comprobar roles de usuario aunque lo veas en numerosas fuentes de Internet, avisado estás.