Tengo un código como este:
$ query_args = array (); $ query_args ['fields'] = array ('ID', 'display_name'); $ query_args ['role'] = 'suscriptor'; $ usuarios = get_users ($ query_args); foreach ($ usuarios como $ usuario) $ users_array [$ user-> ID] = $ user-> display_name;
Quiero obtener más roles y también incluir contributor
, author
y algunos roles personalizados que creé con el complemento Role Scoper Manager
, por ejemplo , etc. ¿Alguna idea de cómo puedo hacer esto get_users
?
Gracias
También puede hacer esto a través de una sola llamada
get_users
o usando una solaWP_User_Query
haciendo uso delmeta_query
argumento:Se
meta_query
extrae de cómoWP_User_Query
maneja elrole
parámetro, si está interesado.fuente
Logré resolver esto usando esta función:
Entonces en mi tema puedo hacer esto:
fuente
Dado que
get_users()
devuelve una matriz de usuarios que coinciden con la cadena de consulta dada como un parámetro. Simplemente ejecute laget_users()
consulta para cada rol que desee por separado y combine los resultados. Luego puede recorrer de$users
la misma manera que lo hubiera hecho de otra manera.fuente
$users = array_merge( get_users( array('role' => 'RoleOne' ,'fields' => 'ID') ), get_users( array('role' => 'RoleTwo' ,'fields' => 'ID') ));
, y funcionó de maravilla. ¡Gracias!El problema con el uso
array_merge
es que no puede usar la paginación. Realmente me gusta la solución de @Andy Adams, pero si está buscando muchos roles, usar su metaconsulta resultará en una consulta muy lenta (internamente, hace una nuevaINNER JOIN
para cada metaconsulta).Mi solución es usar una meta consulta de expresión regular:
Esto genera una consulta que se parece a:
fuente
Simplemente podría combinar más resultados de consultas de usuarios. Digamos que quieres incluir ambos
Author
yEditor
roles. Defina la consulta para cada caso y luego use array_merge para consolidar en una sola matriz.fuente
Todos los parámetros de la función get_users son opcionales. Si no especifica nada, obtendrá una matriz que contiene objetos correspondientes a todos y cada uno de los usuarios del blog actual, incluidos los que tienen roles personalizados.
fuente
fuente