Muitos clientes nos procuram com dúvidas de como estabelecer limites para autores em sites WordPress, principalmente nos sites de agências de notícias em que você deseja que (por exemplo), um autor só tenha acesso a publicações da coluna “Metereologia” e não tenha acesso à coluna de “Bem Estar”.
Vamos a um exemplo prático para entendermos melhor:
Imagine que na sua agência existam 2 autores: O João e a Maria, porém o João só pode postar na Coluna/Categoria “Saúde” e a Maria so pode postar na Coluna/Categoria “Educação”.
Para conseguirmos fazer isso teremos de utilizar um plugin de gerenciamento de permissões, como o “User Role Editor“, junto com um snippet de código para aplicar restrições de categoria.
Passo a passo
- Instalar e ativar o plugin “User Role Editor”:
- Acesse o painel de administração do WordPress.
- Vá para “Plugins” > “Adicionar novo”.
- Pesquise por “User Role Editor”.
- Instale e ative o plugin.
- Criar novas funções de usuário:
- Após ativar o plugin, vá para “Usuários” > “User Role Editor”.
- Crie duas novas funções de usuário: uma para o João e outra para a Maria.
- Configure as permissões básicas necessárias para cada função (como a capacidade de escrever posts).
- Adicionar o código de restrição de categorias:
- Adicione o código abaixo ao arquivo
functions.php
do seu tema ativo ou em um plugin personalizado.
- Adicione o código abaixo ao arquivo
function restrict_authors_by_category( $query ) {
if ( is_admin() && $query->is_main_query() && $query->get('post_type') === 'post' && current_user_can('edit_posts') ) {
$user = wp_get_current_user();
// João pode postar apenas na categoria "Saúde"
if ( in_array( 'joao_role', (array) $user->roles ) ) {
$query->set( 'cat', 'ID_da_categoria_de_saúde' ); // Substitua 'ID_da_categoria_de_saúde' pelo ID real da categoria
}
// Maria pode postar apenas na categoria "Educação"
if ( in_array( 'maria_role', (array) $user->roles ) ) {
$query->set( 'cat', 'ID_da_categoria_de_educacao' ); // Substitua 'ID_da_categoria_de_educacao' pelo ID real da categoria
}
}
}
add_action( 'pre_get_posts', 'restrict_authors_by_category' );
Como encontrar o ID da categoria
- Acesse “Posts” > “Categorias”.
- Passe o cursor sobre o nome da categoria desejada.
- O ID da categoria será exibido na barra de status do navegador (geralmente, no link
edit-tags.php?action=edit&taxonomy=category&tag_ID=XX
).
Atribuir os autores às novas funções
- Vá para “Usuários” > “Todos os Usuários”.
- Edite o perfil de João e atribua a ele a função “joao_role”.
- Edite o perfil de Maria e atribua a ela a função “maria_role”.
Com esses passos, João só poderá postar na Coluna/Categoria Saúde e Maria só poderá postar na Coluna/Categoria Educação.
Imaginemos agora outra possibilidade:
Imagine que a Maria domine assuntos relacionados a “Saúde” e “Educação” e precise publicar nas duas Colunas/Categorias, mas o João somente domina a área de “Saúde” e você deseja restrigir o acesso dele somente a Coluna/Categoria “Saúde”.
Então o código muda um pouco, ficando assim:
function restrict_authors_by_category( $query ) {
if ( is_admin() && $query->is_main_query() && $query->get('post_type') === 'post' && current_user_can('edit_posts') ) {
$user = wp_get_current_user();
// João pode postar apenas na categoria "Saúde"
if ( in_array( 'joao_role', (array) $user->roles ) ) {
$query->set( 'cat', 'ID_da_categoria_de_saude' ); // Substitua 'ID_da_categoria_de_saude' pelo ID real da categoria
}
// Maria pode postar na categoria "Educação" e "Saúde"
if ( in_array( 'maria_role', (array) $user->roles ) ) {
$query->set( 'cat', array( 'ID_da_categoria_de_educacao', 'ID_da_categoria_de_saude' ) ); // Substitua pelos IDs reais das categorias
}
}
}
add_action( 'pre_get_posts', 'restrict_authors_by_category' );
Perceba que no trecho destinado às permissões da Maria, há espaço para você adicionar mais de uma categoria, enquanto no trecho do João, permanece uma categoria somente.
Se você já é nosso cliente e ficou com alguma dúvida, basta nos chamar nos nossos canais de atendimento e irêmos lhe auxiliar.
Se ainda não é nosso cliente, nos chame no WhatsApp (51) 3077-0858 e conheça como poderemos ajudar você em todas as suas demandas, sejam elas WordPress ou outra plataforma.
Até a próxima!