Sabe quando a gente tem uma ideia muito legal para restringir ou controlar conteúdo e criamos categorias de post para isso? Pois é, essa lógica é muito comum e realmente dá certo. Quando estamos criando um Tema ou simplesmente personalizando um template de página, comumente utilizamos a taxonomia categoria para criar um loop de posts conforme aquilo que desejamos exibir.
Entretanto, várias vezes criamos categorias para controlar a exibição de posts e não queremos que os nomes (títulos) das mesmas sejam exibidas no site. Por exemplo, tenho 1 post com as categorias: fitness e assinante. Daí eu quero apenas que a categoria “fitness” seja exibida, enquanto “assinante” fique oculta.
Bem, se o que você estava buscando é exatamente o que acabei de descrever no exemplo acima, parabéns! Você acabou de encontrar o post perfeito, que vai te ensinar como ocultar nome da categoria sem excluir do loop WordPress.
Ocultar Nome da Categoria Sem Excluir do Loop WordPress
Aqui no CanalWP nós temos um post muito bacana com Os 10 Hacks de Categoria Mais Procurados no WordPress. Nesse post você encontra o código que faz com determinada categoria seja excluída do loop fazendo com que a listagem de posts não exiba posts da categoria especificada.
O que a gente quer fazer hoje não é excluir os posts da listagem, mas simplesmente continuar mostrando-os sem que a categoria “X” – que será definida por nós, não tenha seu nome exibido. Então, as demais categorias as quais àquele post pertence, continuarão tendo seus nomes/títulos aparecendo normalmente e aquela que não queremos que fique visível, estará oculta sem atrapalhar o loop de posts WordPress.
Vamos Ao Código
Para que consigamos filtrar as categorias e então ocultar àquela categoria específica que se quer ocultar, precisamos ter acesso aos arquivos do nosso tema WordPress. Isso porque vamos trabalhar com o arquivo de funções do tema, o functions.php.
Fazendo uso do editor de códigos de sua preferência ou acessando os arquivos do site através de FTP, abra o functions.php e deixo pronto para que possamos adicionar o código PHP responsável por realizar o resultado que necessitamos. Veja aqui Como Usar FTP para Transferir e Modificar Arquivos no WordPress.
Bloco de Código
Copie e cole o bloco de código que segue abaixo para o arquivo functions.php referente ao tema do seu site WordPress:
add_filter('get_the_terms', 'ocultar_categorias', 10, 3); function ocultar_categorias($terms, $post_id, $taxonomy){ //Defina os IDs das categorias $excludeIDs = array(18,19); //Obtemos todos os termos $exclude = array(); foreach ($excludeIDs as $id) { $exclude[] = get_term_by('id', $id, 'category'); } // Filtramos as categorias foreach($terms as $key => $term){ if($term->taxonomy == "category"){ foreach ($exclude as $exKey => $exTerm) { if($term->term_id == $exTerm->term_id) unset($terms[$key]); } } } return $terms; }
Entendendo o Código
De cara com o código da função, vamos verificar como é realizada a filtragem das categorias?
Perceba que nas 2 primeiras linhas do código passamos pelo add_filter o nome da função que iremos utilizar em get_the_terms. Logo depois, abrimos a nossa função definindo o nome da mesma, que é ocultar_categorias.
A primeira coisa que passamos à nossa função é o id das categorias que desejamos ocultar. Estamos falando do trecho $excludeIDs = array(18,19). Os ids 18 e 19 são referentes as 2 categorias do meu site que escolhi ocultar.
Então, altere os ids passando aqueles que são referentes ao seu site.
Depois, iniciando por $exclude = array(); nós pegamos todos os termos category e juntamos ao array os ids que definimos no início do código.
E por fim, em foreach($terms as $key => $term), nós filtramos os termos encontrando o tipo category para depois excluir as categorias com os ids que informamos antes.
Para quem tem pouca afinidade com código, mesmo com a breve explicação poder ficar difícil de entender como as linhas de código da função trabalham. Não se preocupe, o que importa é que funciona!
Após adicionar o bloco de código ao functions.php não esqueça de salvar o arquivo. Só assim a edição que acabamos de realizar no arquivo, adicionando o código da função com os ids das categorias que queremos ocultar, será salva.
Resultado – Antes e Depois
Para que você possa entender como o código da função PHP que vimos antes funciona, vou te dar o exemplo do meu site de testes. Tenho 2 categorias no meu blog, onde desejo que seus títulos não sejam exibidos nas postagens, mas apenas as demais categorias. Assim, as categorias que vou ocultar são: “Categoria Secreta” e “Assinantes”.
Então, para obter o id das categorias, acesso minha Dashboard e vou na lista de categorias (Posts > Categorias). Depois, coloco a seta do mouse em cima do título de cada categoria e verifico qual o id que é exibido na URL que aparece no final da janela do navegador.
Então, pego o id de cada categoria, adiciono à função que vimos antes e salvo o arquivo functions.php.
Depois disso, acesso a minha página de posts e olha só como ficou:
Conclusão
Para quem deseja aprender mais sobre categorias, recomendo que veja um pouco mais sobre taxonomias no post Gerencie Taxonomias e Custom Post com o Plugin Types.
Ocultar nome da categoria sem excluir do loop WordPress com a função que vimos neste post é algo muito fácil de fazer. Isso porque utilizamos de filtros que o WP nos fornece, o que possibilita criar soluções personalizadas e ter novas ideias para organizar, controlar e restringir conteúdos.
No início desse post, você viu que apenas pincelei uma ideia de como ocultar nome da categoria sem excluir do loop WordPress pode ser algo útil. Entretanto, essa é apenas uma única ideia. Assim, se você vai utilizar essa solução para algum outro problema ou necessidade, que tal contar para nós e para os demais leitores do blog aqui nos comentários?
Se você gostou das dicas deixe seu comentário abaixo e considere compartilhar com seus amigos. Você pode deixar dicas que considera importante nos comentários abaixo e nós certamente iremos adicionar a este artigo.
Ferramentas WordPress Veja Mais Ferramentas
Q2W3 Fixed Widget
Asset CleanUP PRO
SeedProd
Funciona com categorias de produtos do woocommerce?
Muitíssimo obrigado! Sou iniciando no WP e estive à caça no código do tema para inibir isso; agora encontrei aqui de mão beijada. Poupou-me muito tempo.
Maravilhoso!! Tutorial mara!
Como posso desfazer a operação e fazer com que as categorias voltem a aparecer?!
Olá Fábio,
Você precisa apenas remover o código que adicionou no arquivo functions.php do seu tema.
Se estiver usando algum plugin de cache, CDN, minificação, pode ser necessário forçar a limpeza dos mesmos e do seu browser também.
Abraço.
Vou tentar…
Muito obrigado!!!!
Sendy, parabéns pela dica. Explicação super didática e um recurso que poderá ser útil em diversas ocasiões e necessidades.
Muito obrigado!