Como adicionar categorias a um tipo de postagem personalizada no WordPress

Um de nossos leitores entrou em contato recentemente perguntando sobre maneiras de adicionar categorias a um tipo de post personalizado no WordPress. 

Categorias são uma das taxonomias nativas do WordPress, usadas principalmente para posts de blog. No entanto, elas não aparecem automaticamente em tipos de post personalizados, o que limita suas opções de organização.

Felizmente, encontramos algumas soluções simples para esse problema ao longo de nossos anos trabalhando em sites WordPress.

Neste artigo, mostraremos como adicionar categorias a um tipo de post personalizado no WordPress.

Adicionando categorias a tipos de post personalizados no WordPress

Quando você pode precisar adicionar categorias a um tipo de post personalizado?

O WordPress permite que desenvolvedores de plugins e proprietários de sites criem seus próprios tipos de conteúdo. Semelhante a posts e páginas, esses tipos de post personalizados também podem ter suas próprias taxonomias, como categorias e tags.

Por exemplo, se você publica resenhas de filmes, pode querer criar um tipo de post personalizado para 'Filmes'.

Você também pode precisar organizar seus filmes em tópicos adequados, para isso você precisará de uma taxonomia personalizada. Você pode criar uma taxonomia chamada gênero.

No entanto, e se você quisesse usar as mesmas categorias que usa para seus posts de blog com o tipo de post Filmes?

É neste momento que você precisa habilitar as categorias para o seu tipo de post personalizado. Isso permitiria que você usasse as mesmas categorias tanto para seus posts de blog quanto para o seu tipo de post personalizado.

Dito isso, vamos agora dar uma olhada em como adicionar facilmente categorias a um tipo de post personalizado no WordPress.

Adicionar Categorias a um Tipo de Post Personalizado com um Plugin

Se você é iniciante, recomendamos o uso do plugin Custom Post Type UI para criar tipos de post personalizados.

Com o plugin Custom Post Type UI, você tem a opção de associar seu tipo de post personalizado a qualquer taxonomia integrada ou personalizada, incluindo categorias.

Primeiro, você precisa instalar e ativar o plugin Custom Post Type UI. Para mais detalhes, veja nosso guia passo a passo sobre como instalar um plugin do WordPress.

Após a instalação, você precisa visitar CPT UI » Adicionar/Editar Tipos de Post para criar um novo tipo de post personalizado ou editar um tipo de post personalizado existente que você criou com o plugin.

Editando tipos de post com o plugin CPT UI

Role para baixo até o final, onde estão as Opções de Configuração. A partir daí, você verá a área de Taxonomias.

Você precisa marcar a caixa ao lado de categorias e salvar seu tipo de post personalizado.

Ativar categorias para um Tipo de Post Personalizado no WordPress

Não se esqueça de clicar no botão 'Salvar Tipo de Post' para armazenar suas configurações.

Agora, você pode editar qualquer conteúdo sob esse tipo de post específico e verá a opção de selecionar categorias na coluna da direita no editor de blocos do WordPress.

Categoria adicionada a um tipo de post personalizado

Adicionar Categorias a um Tipo de Post Personalizado Manualmente com Código

Se você criou seu tipo de post personalizado adicionando o código no arquivo functions.php do seu tema, um plugin específico para o site, ou em um plugin de snippets de código, então você terá que modificar o código para adicionar a categoria como taxonomia suportada.

Tudo o que você precisa fazer é adicionar esta linha nos argumentos do seu tipo de post personalizado.

'taxonomies'  => array( 'category' ),

É provável que você já tenha esta linha no código existente do seu tipo de post personalizado com alguma outra taxonomia personalizada. Se tiver, basta adicionar uma vírgula após ela e adicionar uma categoria, assim:

'taxonomies'          => array('topics', 'category' ),

Aqui está um exemplo completo de código onde criamos um tipo de post personalizado chamado 'Filmes' com suporte para categorias nativas.

function custom_post_type() {
 
// Set UI labels for Custom Post Type
    $labels = array(
        'name'                => _x( 'Movies', 'Post Type General Name', 'twentythirteen' ),
        'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentythirteen' ),
        'menu_name'           => __( 'Movies', 'twentythirteen' ),
        'parent_item_colon'   => __( 'Parent Movie', 'twentythirteen' ),
        'all_items'           => __( 'All Movies', 'twentythirteen' ),
        'view_item'           => __( 'View Movie', 'twentythirteen' ),
        'add_new_item'        => __( 'Add New Movie', 'twentythirteen' ),
        'add_new'             => __( 'Add New', 'twentythirteen' ),
        'edit_item'           => __( 'Edit Movie', 'twentythirteen' ),
        'update_item'         => __( 'Update Movie', 'twentythirteen' ),
        'search_items'        => __( 'Search Movie', 'twentythirteen' ),
        'not_found'           => __( 'Not Found', 'twentythirteen' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'twentythirteen' ),
    );
     
// Set other options for Custom Post Type
     
    $args = array(
        'label'               => __( 'movies', 'twentythirteen' ),
        'description'         => __( 'Movie news and reviews', 'twentythirteen' ),
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'page',
        'show_in_rest'        => true,
         
        // This is where we add taxonomies to our CPT
        'taxonomies'          => array( 'category' ),
    );
     
    // Registering your Custom Post Type
    register_post_type( 'movies', $args );
 
}
 
/* Hook into the 'init' action so that the function
* Containing our post type registration is not 
* unnecessarily executed. 
*/
 
add_action( 'init', 'custom_post_type', 0 );

Exibindo Múltiplos Tipos de Post na Página de Categoria

Por padrão, as páginas de categoria do seu site WordPress exibirão apenas o tipo de post padrão 'Posts'.

Tipo de post ausente

Para exibir seus tipos de post personalizados na mesma página de categoria que seus posts padrão, você precisa adicionar este código ao arquivo functions.php do seu tema ou em um plugin de snippets de código:

add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
  if( is_category() ) {
    $post_type = get_query_var('post_type');
    if($post_type)
        $post_type = $post_type;
    else
        $post_type = array('nav_menu_item', 'post', 'movies'); // don't forget nav_menu_item to allow menus to work!
    $query->set('post_type',$post_type);
    return $query;
    }
}

Observação: Não se esqueça de substituir 'movies' pelo nome do seu próprio tipo de post personalizado.

Recomendamos adicionar este código usando WPCode, o melhor plugin de snippets de código do mercado. O WPCode torna seguro e fácil adicionar código personalizado no WordPress sem editar o arquivo functions.php do seu tema.

WPCode

Para começar, você precisa instalar e ativar o plugin gratuito WPCode. Se precisar de ajuda, consulte nosso tutorial sobre como instalar um plugin do WordPress.

Assim que o plugin for ativado, vá para Snippets de Código » Adicionar Snippet no painel do WordPress.

Na página Adicionar Snippet, passe o mouse sobre a opção ‘Adicionar Seu Código Personalizado (Novo Snippet)’ e clique no botão ‘+ Adicionar Snippet Personalizado’.

Adicionar um novo trecho de código personalizado no WPCode

Em seguida, selecione ‘PHP Snippet’ como o tipo de código na lista de opções que aparecem na tela.

Selecione Snippet PHP como o tipo de código

Em seguida, adicione um título para o seu snippet na parte superior da página, que é apenas para sua referência e pode ser qualquer coisa para ajudá-lo a lembrar para que serve o código.

Em seguida, simplesmente cole o código de cima na caixa ‘Pré-visualização do Código’.

Cole o código na caixa de pré-visualização de código

Depois disso, alterne o interruptor na parte superior da página de ‘Inativo’ para ‘Ativo’ e clique no botão ‘Salvar Snippet’.

Ative e salve seu snippet de código personalizado

Agora você pode visitar uma página de arquivo de categoria, e ela exibirá suas entradas do seu tipo de postagem personalizado.

Tipo de post exibido na página de arquivo de categorias

Você pode usar os mesmos métodos para adicionar tags aos seus tipos de postagem personalizados também. Veja nosso guia sobre categorias vs. tags para saber mais.

Guias de Especialistas sobre Categorias no WordPress

Quer saber mais sobre como usar categorias no WordPress? Confira estes tutoriais:

Esperamos que este artigo tenha ajudado você a aprender como adicionar categorias ao seu tipo de postagem personalizado no WordPress. Você também pode querer ver nossa seleção de especialistas dos plugins essenciais do WordPress para expandir seu site, ou estas dicas sobre como aumentar o tráfego do seu blog.

Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

39 CommentsLeave a Reply

  1. Oi, obrigado por este artigo

    O código para Exibir Múltiplos Tipos de Postagem na Página de Categoria está funcionando bem.

    Quero exibir múltiplos tipos de postagem na página de Tags, você pode compartilhar esse código.

    • Para ter tags adicionadas aos seus tipos de postagem personalizados, você adicionaria 'post_tag' ao seu array de taxonomia, então ficaria assim:

      ‘taxonomies’ => array( ‘category’, ‘post_tag’ ),

      Admin

  2. Como podemos separar as listas de categorias do tipo de postagem personalizado das categorias das postagens do blog. Eu adicionei o código acima e funcionou. Mas o problema é que as categorias deste tipo de postagem personalizado e as postagens do blog estão misturadas. Elas deveriam ser separadas.

    • O objetivo deste tutorial é que eles se misturem, para o que você está procurando, pode ser melhor usar uma categoria diferente para os tipos de postagem personalizados para que eles não apareçam em suas páginas de arquivo de categoria.

      Admin

  3. Olá,
    Eu usei este código e funcionou perfeitamente! O CPT aparece na categoria do post que escolhi para ele.
    Mas não aparece no meu arquivo do blog. Como o arquivo padrão, que mostra todos os posts.
    Como posso mostrá-lo lá também?

    Muito obrigado!

  4. Por favor, diga-me como adicionar uma categoria de CPT a um menu?

    Eu tenho o CPT “artigo” com a categoria “carro” e “caminhão”

    Eu quero ter um menu personalizado com estas entradas:

    Todos – carros – caminhões

    Eu pesquiso e pesquiso e não encontro. Vejo as categorias na administração do menu e posso adicioná-las ao menu, mas o resultado desses links = páginas em branco.
    Suponho que as categorias listadas sejam para categorias de posts e não para categorias de CPT...

    Você tem alguma dica para mim?

    Connie

    • Você pode querer verificar suas opções de tela na área de menu para ver se o tipo de postagem personalizada é uma opção lá para você adicionar que está desmarcada atualmente

      Admin

  5. Eu criei um tipo de post chamado produtos e uso as categorias principais do wp.
    A estrutura do URL do meu produto é mysite.com/product/skf bearing 12
    Minhas páginas de categoria mostram mysite.com/category/bearings
    Por que o URL do produto não exibe a Categoria dentro do URL? Como isto
    mysite.com/bearings/skf bearing 12
    O permalink do meu post personalizado é %category%%post%
    Eu salvei o permalink, mas ainda mostra a mesma estrutura.

  6. ei! minha lista de categorias de postagens padrão aparece na lista de categorias de tipos de postagem personalizados

    por favor me ajude a corrigir isso

    • Oi Moises,

      Esta string é usada para tradução. Se o seu tema suportar tradução, você precisará substituí-la pelo text domain do seu tema. Se você não tiver certeza sobre o que usar aqui, pergunte ao suporte do seu tema. Você também pode colá-la como está e essas strings serão ignoradas.

      Admin

  7. Para sua informação, isso quebrará sua edição em massa no admin. Adicionei isso a vários tipos de post e, quando vou para a edição em massa, a parte post_type da consulta se torna “Array” em vez do tipo de post que está tentando editar no admin.

    Para contornar isso, você só precisa adicionar isto antes de if( is_category() ):

    `if ( is_admin() ) return;`

  8. Olá, preciso de ajuda.
    Eu tenho 2 CPTs e não quero que eles tenham uma taxonomia compartilhada.
    Como
    CPT 1
    – Taxonomia (Tipos)
    – Tipo A
    – Tipo B
    CPT 2
    – Taxonomia (Tipos)
    – Tipo C
    – Tipo D
    Observação: Eu não quero mostrar aqui os tipos A&B do CPT 1
    Obrigado

  9. O código para exibir CPTs em páginas de categoria funciona perfeitamente, obrigado! Mas, há algo que você deve observar. A postagem mais recente / post CPT marcado com um nome de categoria não aparece nessa página de categoria imediatamente. Ele só aparece na segunda ação semelhante – apenas quando outra postagem / post CPT é adicionada à mesma categoria, a primeira postagem aparece nessa página de categoria. Existe uma solução para isso?

  10. Estou usando CPT UI. Criei o tipo de post personalizado “jobs” e permiti categorias. Mas essas mesmas categorias também estão em Posts. Eles usam as mesmas categorias. É possível que meu tipo de post personalizado “jobs” tenha suas próprias categorias e os posts clássicos tenham suas próprias categorias? Obrigado

    • Mesma pergunta. Precisamos executar uma consulta personalizada se quisermos criar um arquivo de categoria desse tipo de post personalizado?

  11. como você lida com o widget da barra lateral de Posts Recentes que também lista o item do menu?

    $post_type = array(‘nav_menu_item’, ‘post’, ‘movies’);

  12. Thanks for the great tutorial here. :)

    Você pode me dizer como posso mostrar posts personalizados por categoria em uma página separada.

    A página de categoria padrão está funcionando corretamente, ela exibe os posts. mas quando tentei exibir posts sob a mesma categoria em uma página diferente, ela retorna um array vazio. Por favor, ajude

  13. Obrigado! Isso é incrível. Resolveu simplesmente um problema no qual eu estava trabalhando com soluções muito mais complicadas (que não funcionaram).

    Uma pergunta, porém, eu nunca adicionei a declaração de taxonomia ao criar taxonomias personalizadas para meus CPTs e as taxonomias sempre funcionaram. Adicionei apenas a 'categoria' para ver o que aconteceria e funcionou lindamente, adicionei categorias de posts ao meu CPT sem nenhum efeito adverso nas taxonomias personalizadas existentes.

    É uma boa prática colocar impostos personalizados nos argumentos do CPT?

    Thanks again for sharing :)

  14. Código personalizado para adicionar categorias e subcategorias em tipos de post personalizados. Se eu escolher $post_type = array(‘nav_menu_item’, ‘post’, ‘myPostType’); o código para exibir minhas categorias só exibe aquela categoria, mas se eu reutilizar a mesma função para outra categoria, não funcionará. Por favor, me dê alguma ideia.

  15. Olá. Criei com sucesso um tipo de post personalizado (Obra de Arte) em functions.php. Em seguida, criei uma taxonomia personalizada (‘hierárquica’ => true), o que significa que posso adicionar categorias personalizadas ao criar uma nova postagem de Obra de Arte.

    Eu estava me perguntando se, dentro da mesma função de taxonomia personalizada, eu poderia pré-definir as categorias para a postagem de Obra de Arte.

    O que eu quero são apenas duas categorias para serem selecionáveis pelo usuário: 1) Pintura, 2) Escultura. Eu não quero que o usuário possa adicionar mais categorias. Idealmente, o usuário seria ‘forçado’ a escolher uma ou outra categoria, ou seja, a postagem não seria publicável a menos que uma categoria tivesse sido escolhida.

    Isso é possível?

  16. Estou adicionando mais de uma categoria a vários tipos de post personalizados.

    Como você pode adicionar mais de uma na linha:

    $post_type = array(‘nav_menu_item’, ‘post’, ‘myPostType’);

    ?

    Obrigado!

    • Já resolvi meu problema.

      Talvez instintivamente, comecei a listar meus tipos de post personalizados como um array, mas acontece que tudo o que eu precisava fazer era listá-los dentro do objeto $post_type, separados por vírgulas.

      Obrigado!

  17. Olá, tenho uma pergunta. Estou usando um plugin como tipo de postagem e ele tem sua própria área de categorias. Quero usar as categorias principais do meu WordPress neste plugin, mas não consegui fazer isso até agora. Usei o plugin acima e, depois disso, ele cria 2 áreas de categorias sob o plugin e, quando quero mostrar as postagens sob esse tipo de postagem com categorias, ele não mostra nada, pois a lista de categorias do próprio plugin está vazia. Tentei muitas coisas, incluindo manipular o código do plugin, mas nada resolveu meu problema. Há alguma maneira que você possa sugerir?

  18. Este artigo foi atualizado recentemente para funcionar com a versão atual do WP? Notei que o plugin usado não é atualizado há mais de 2 anos, o que me deixa um pouco hesitante em usá-lo.

  19. Obrigado pelo ótimo tutorial. você pode me dizer como posso mostrar posts personalizados por categoria em uma página separada. Digamos que eu tenha CPT “talento” e uma categoria “arte”. Tenho dois posts diferentes, um criado sob o CPT “talentos” e outro é um post geral criado sob “posts”. Ambos os posts são atribuídos à categoria “arte” (isso é comum para CPT e posts gerais). Agora eu sei que para os posts gerais você pode ver a página da categoria como exemplo.com/category/art/. Para a página de categoria de CPT, acho que o URL deveria ser exemplo.com/talent/art/, mas está me dando um erro 404.

  20. Bom trabalho, obrigado!
    Tenho alguns problemas:
    – No widget “Categorias”, aparecem as Categorias de Tipos de Postagem Personalizados, mas ao clicar, retorna uma mensagem de “nada encontrado”.
    – No widget “Posts Recentes”, não aparecem Posts de Tipos de Postagem Personalizados.
    Existe uma maneira de corrigir isso?

  21. Artigo interessante. O WordPress é um poderoso serviço de gerenciamento de conteúdo web empresarial que permite a uma empresa ter sites eficientes que atendem aos seus requisitos de negócios. É fácil de usar e ferramentas sem esforço tornam o desenvolvimento mais fácil. Do design responsivo à segurança e escalabilidade, o WordPress CMS tem tudo isso, no entanto, procurar as ferramentas certas para um site é importante.
    Adicionar categoria a um tipo de postagem personalizado às vezes se torna uma necessidade para diferenciar um post de outro, onde os métodos mencionados no artigo serão úteis. Usar um plugin será um método fácil onde até mesmo uma pessoa não técnica poderá implementá-lo, no entanto, com este artigo, não sinto que usar código para adicionar esse recurso por uma pessoa não técnica será difícil.
    Obrigado por compartilhar.

Deixar uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.