Rolhas e capacidades são dois aspectos importantes do WordPress que lhe permitem controlar os privilégios do utilizador.
WordPress armazena as funções e as suas capacidades na tabela options
sob a tabela user_roles
key.
Roles #Roles
Uma função define um conjunto de capacidades para um utilizador. Por exemplo, o que o utilizador pode ver e fazer no seu painel de instrumentos.
Por defeito, o WordPress tem seis funções:
- Super Admin
- Administrador
- Editor
- Autor
- Contribuidor
- Subscriber
Mais funções podem ser adicionadas e as funções por defeito podem ser removidas.
Adicionar papéis #Adicionar papéis
Adicionar novos papéis e atribuir-lhes capacidades com add_role().
function wporg_simple_role() {add_role('simple_role','Simple Role',array('read' => true,'edit_posts' => true,'upload_files' => true,),);}// Add the simple_role.add_action( 'init', 'wporg_simple_role' );
Expandir código fonte completoColapsar código fonte completo
Após a primeira chamada para add_role(), o Papel e as suas Capacidades serão armazenados na base de dados!
As chamadas sequenciais não farão nada: incluindo alterar a lista de capacidades, o que pode não ser o comportamento que se espera.
Nota:
Para alterar a lista de capacidades em massa: remover a função usando remove_role() e adicioná-la novamente usando add_role() com as novas capacidades.
Certifique-se de o fazer apenas se as capacidades diferirem das que espera (isto é, condicionar isto) ou irá degradar consideravelmente o desempenho!
Top
Remover Funções #Remover Funções
Remover Funções com remove_role().
function wporg_simple_role_remove() {remove_role( 'simple_role' );}// Remove the simple_role.add_action( 'init', 'wporg_simple_role_remove' );
Alerta:
Após a primeira chamada para remover_role(), o Papel e as suas Capacidades serão removidos da base de dados!
As chamadas sequenciais não farão nada.
Nota:
Se estiver a remover as funções padrão:
- Aconselhamos a não remover as funções de Administrador e Super Admin!
>li>Cerve o código no seu plugin/tema, pois futuras actualizações do WordPress poderão adicionar novamente estes papéis.li>Executarupdate_option('default_role', YOUR_NEW_DEFAULT_ROLE)
br>br>, pois irá eliminar subscriber
que é o papel por defeito do WP.
Top
Capacidades #Capacidades
Capacidades definem o que uma função pode e não pode fazer: editar mensagens, publicar mensagens, etc.
Nota:
Tipos personalizados podem requerer um certo conjunto de Capacidades.
Top
Adicionar Capacidades #Adding Capabilities
Pode definir novas capacidades para um papel.
Utiliza get_role() para obter o objecto de papel, depois utiliza o método add_cap()
desse objecto para adicionar uma nova capacidade.
function wporg_simple_role_caps() {// Gets the simple_role role object.$role = get_role( 'simple_role' );// Add a new capability.$role->add_cap( 'edit_others_posts', true );}// Add simple_role capabilities, priority must be after the initial role definition.add_action( 'init', 'wporg_simple_role_caps', 11 );
Nota:
É possível adicionar capacidades personalizadas a qualquer papel.
p>Até ao nível do administrador padrão do WordPress, não teriam efeito, mas podem ser utilizados para ecrã de administração personalizado e áreas front-end.
Top
Capacidades de Remoção #Capacidades de Remoção
Pode remover capacidades de uma função.
A implementação é semelhante a Adicionar Capacidades com a diferença de remove_cap()
método para o objecto de papel.
Top
Utilizar Funções e Capacidades #Utilizar Funções e Capacidades
Top
Encontrar Função #Utilizar Função
Conseguir o objecto de função incluindo todas as suas capacidades com get_role().
get_role( $role );
Top
O utilizador pode #O utilizador pode
Verifica se um utilizador tem uma função ou capacidade especificada com user_can().
user_can( $user, $capability );
Aviso:
Existe um terceiro argumento não documentado, $args, que pode incluir o objecto contra o qual o teste deve ser realizado.
E.g. Passar um ID de posto para testar a capacidade desse posto específico.
Top
Posso do Utilizador Actual #Posso do Utilizador Actual
current_user_can() é uma função de invólucro para user_can() usando o objecto do utilizador actual como o $user
parâmetro.
p>Utilizar isto em cenários em que as áreas back-end e front-end devem exigir um certo nível de privilégios para aceder e/ou modificar.
current_user_can( $capability );
Top
Exemplo #Exemplo
Há um exemplo prático de adição de um link Editar num ficheiro modelo se o utilizador tiver a capacidade adequada:
if ( current_user_can( 'edit_posts' ) ) {edit_post_link( esc_html__( 'Edit', 'wporg' ), '<p>', '</p>' );}
Top
Multisite #Multisite
A função actual_utilizador_can_for_blog() é utilizada para testar se o utilizador actual tem uma certa função ou capacidade num blog específico.
current_user_can_for_blog( $blog_id, $capability );
Top