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;