Eu tenho um código como este:
$ query_args = array (); $ query_args ['fields'] = array ('ID', 'display_name'); $ query_args ['role'] = 'assinante'; $ users = get_users ($ query_args); foreach ($ usuários como $ usuário) $ users_array [$ user-> ID] = $ user-> display_name;
Quero obter mais funções e também incluir contributor
, author
e algumas funções personalizadas que criei com o plug-in Role Scoper Manager
, por exemplo , etc. Alguma idéia de como fazer isso get_users
?
obrigado
Você também pode fazer isso por meio de uma única chamada
get_users
ou usando uma únicaWP_User_Query
, usando ometa_query
argumento:O
meta_query
é retirado de comoWP_User_Query
lida com orole
parâmetro, se você estiver interessado.fonte
Eu consegui resolver isso usando esta função:
Então, no meu tema, eu posso fazer isso:
fonte
Desde
get_users()
retorna uma matriz de usuários que correspondem à string de consulta fornecida como um parâmetro. Basta executar aget_users()
consulta para todas as funções que você deseja separadamente e mesclar os resultados. Você pode fazer o loop$users
da mesma maneira que faria de outra maneira.fonte
$users = array_merge( get_users( array('role' => 'RoleOne' ,'fields' => 'ID') ), get_users( array('role' => 'RoleTwo' ,'fields' => 'ID') ));
, e deu certo. Obrigado!O problema com o uso
array_merge
é que você não pode usar a paginação. Eu realmente gosto da solução de @Andy Adams, mas se você estiver pesquisando várias funções, o uso da meta consulta resultará em uma consulta muito lenta (internamente, ele faz um novoINNER JOIN
para cada meta consulta).Minha solução é usar uma meta consulta de expressão regular:
Isso gera uma consulta que se parece com:
fonte
Você pode simplesmente mesclar mais resultados de consulta do usuário. Digamos que você queira incluir ambos
Author
eEditor
papéis. Defina a consulta para cada caso e use array_merge para consolidar em uma única matriz.fonte
Todos os parâmetros da função get_users são opcionais. Se você não especificar nada, obterá uma matriz que contém objetos correspondentes a todos os usuários do blog atual, incluindo aqueles com funções personalizadas.
fonte
fonte