Neste post iremos ver uma das formas de consultar todos os usuários com a permissão de autor “publish_posts”.

Listando usuários pela sua função
Por padrão o WordPress possuí algumas funções definidas para os usuários cadastrados. Elas são:
- Assinante
- Colaborador
- Autor
- Editor
- Administrador
Alguns plugin podem adicionar novos tipos de função flexibilizando ainda mais a administração do painel do WordPress.
Vamos ao código
Primeiro montamos um array com a função que desejamos, no nosso exemplo seria “publicar post”.
$roles__in = [];
foreach( wp_roles()->roles as $role_slug => $role )
{
if( ! empty( $role['capabilities']['publish_posts'] ) )
$roles__in[] = $role_slug;
}
Agora montamos a “query”:
if( $roles__in )
$users = get_users( [ 'roles__in' => $roles__in, 'fields' => 'ids' ] );
Você também pode utilizar a função get_users de forma mais direta:
get_users( array(
'role__in' => array('administrator', 'editor', 'author'),
) );
Sobre WP_Roles
A role option”” é simples, a estrutura é organizada pelo nome da função que armazena o nome no valor da chave ‘nome’. Os recursos são armazenados como uma matriz no valor da chave ‘capacidade’.
array (
'rolename' => array (
'name' => 'rolename',
'capabilities' => array()
)
)
Arquivo: wp-includes/class-wp-roles.php
Função adicional
Recuperando a função do autor dentro do loop de um Post
Adicione no arquivo functions.php do seu tema:
function get_author_role()
{
global $authordata;
$author_roles = $authordata->roles;
$author_role = array_shift($author_roles);
return $author_role;
}
Exemplo de utilização:
if(have_posts()) : while(have_posts()) : the_post();
echo get_the_author().' | '.get_author_role();
endwhile;endif;