Obtener rol de usuario por ID WordPress

2 minutos de lectura

avatar de usuario
Tristán .L

Necesito verificar de alguna manera el rol de alguien solo con su identificación. he encontrado el current_user_can() cheque. Pero esto solo funciona para las personas que han iniciado sesión. ¿Cómo verificaría esto si ese usuario no es el usuario actual? Estoy usando un sistema de pedidos por teléfono, pero usa la cuenta de administrador/específica para hacer pedidos para otras personas.

  • Como se describe, utilizo un sistema especial de pedidos por teléfono. Los pedidos a veces los realiza (por ejemplo) el administrador para un usuario específico. Y cuando esto sucede, necesito verificar el rol de ese usuario original

    – Tristán .L

    19 de abril de 2016 a las 14:33

avatar de usuario
Methanjay

Para verificar si un usuario tiene un rol específico, debe obtener una lista de sus roles y ver si el rol aparece allí.

Función de ejemplo:

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);
}

Ejemplo de uso:

$user_is_subscriber = user_has_role(get_current_user_id(), 'subscriber');

  • $user_meta=get_userdata($user_id); $user_roles=$user_meta->roles; if (in_array("subscriber", $user_roles)){} Da como resultado una verificación de rol para el suscriptor.

    – Tristán .L

    19 de abril de 2016 a las 15:18

avatar de usuario
Ahmad Awais

La información que necesita saber antes de continuar:

  • No puede obtener el rol de usuario por ID directamente.
  • puede obtener todos los roles a los que está asignado un usuario.

Obtengamos todos los roles y verifiquemos si el rol que le interesa está allí o ahora.

<?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';
}

hola prueba este codigo optimo

if (get_userdata($post->post_author)->roles[0] == 'your_specified_role'){
   echo 'role exist';
}else{
   echo 'role does not exist';
}

  • Un usuario puede tener varios roles en WordPress, por lo que la forma correcta de afirmar es in_array

    –Lucas Bustamante

    4 sep 2019 a las 12:58

$user_meta = get_userdata($user_id);
$user_roles = $user_meta->roles;

if ( in_array( 'administrator', $user_roles, true ) ) {
    //echo User is a administrator';
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad