Custom Post Types no WordPress: Guia de Tipos de Conteúdo Personalizados

O WordPress nativamente trabalha com posts e páginas, mas para projetos mais complexos muitas vezes é necessário criar tipos de conteúdo específicos, como portfólios, depoimentos, produtos, eventos, entre outros. É aí que entram os Custom Post Types (CPT). Neste guia completo você vai entender o que são, quando usar, como registrar, quais parâmetros utilizar e como exibir esses conteúdos no front-end. Se você está buscando um desenvolvimento WordPress completo, dominar CPTs é essencial.

O que são Custom Post Types?

Custom Post Types são tipos de conteúdo personalizados que estendem o WordPress além dos padrões (post e page). Com eles é possível organizar e exibir dados de forma estruturada, com painel administrativo próprio e URLs amigáveis. Um CPT funciona exatamente como um post normal, mas com suas próprias taxonomias, campos e templates. É a base para qualquer desenvolvimento de temas mais avançado.

Quando utilizar um Custom Post Type?

CPTs são recomendados sempre que o conteúdo do site não se encaixa perfeitamente em posts ou páginas. Veja alguns cenários comuns:

  • Portfólio de projetos: para listar trabalhos realizados com imagens, descrição e links.
  • Depoimentos de clientes: gerenciar depoimentos de forma independente e exibir em widgets.
  • Produtos ou catálogos: ideal para e-commerce ou sites que exibem itens com características próprias.
  • Eventos e agendas: armazenar datas, locais e informações de eventos separadamente.
  • Vagas de emprego: gerenciar oportunidades com campos específicos (local, modalidade, requisitos).
  • Avaliações e reviews: para sites de análise de produtos ou serviços.

Além disso, CPTs são fundamentais quando se trabalha com campos personalizados (através de ACF ou meta boxes), pois permitem uma gestão mais limpa do conteúdo.

Como registrar um Custom Post Type no WordPress

Existem duas formas principais: via functions.php do tema ou através de um plugin próprio. Recomenda-se utilizar o tema apenas se o CPT for estritamente ligado ao design; para maior portabilidade, um plugin é mais indicado. Abaixo, um exemplo básico de registro com register_post_type:

function criar_cpt_portfolio() {
    register_post_type('portfolio', array(
        'labels'       => array(
            'name'          => 'Portfólio',
            'singular_name' => 'Projeto',
            'add_new_item'  => 'Adicionar Novo Projeto',
        ),
        'public'       => true,
        'has_archive'  => true,
        'supports'     => array('title', 'editor', 'thumbnail', 'excerpt'),
        'menu_icon'    => 'dashicons-portfolio',
        'rewrite'      => array('slug' => 'portfolio'),
        'show_in_rest' => true,
    ));
}
add_action('init', 'criar_cpt_portfolio');

O parâmetro show_in_rest habilita o CPT no Block Editor (Gutenberg) e na REST API. Para expor CPTs via API REST, mantenha esse parâmetro como true e consulte a documentação oficial.

Parâmetros principais do register_post_type

Conhecer os parâmetros permite que você crie CPTs exatamente como precisa. Os principais são:

ParâmetroDescriçãoExemplo
labelsDefine os rótulos (nome, singular, menu, etc.)'name' => 'Portfólio'
publicControla se o CPT é visível no admin e no front-endtrue
has_archiveHabilita uma página de arquivo (ex: /portfolio)true
supportsQuais campos são exibidos no editor (title, editor, thumbnail, etc.)array('title','editor')
rewriteDefine a estrutura da URL (slug)array('slug' => 'projetos')
show_in_restPermite usar o REST API e o Gutenbergtrue
menu_iconÍcone do menu administrativo (dashicons ou SVG)'dashicons-portfolio'
taxonomiesTaxonomias associadas (category, post_tag, ou custom)array('category')

Exemplos práticos de Custom Post Types

A seguir, cinco exemplos reais de CPTs que você pode implementar no seu projeto:

  1. Portfolio: perfeito para agências exibirem trabalhos realizados, com suporte a thumbnail e galeria.
  2. Depoimentos: permite gerenciar avaliações de clientes de forma independente e exibi-las em um slider ou grid.
  3. Produtos: mesmo sem WooCommerce, é possível criar um catálogo simples com campos personalizados de preço e variações.
  4. Eventos: com campos de data, local e tipo, ideal para sites de eventos ou cronogramas.
  5. Vagas de Emprego: cada vaga pode ter tipo de contratação, localização e requisitos específicos.

Todos esses exemplos se beneficiam de campos personalizados para enriquecer a experiência do usuário e do administrador.

Como exibir Custom Post Types no front-end

Para exibir CPTs na página inicial ou em templates customizados, utilize a classe WP_Query. Exemplo de loop para listar posts do tipo "portfolio":

$query = new WP_Query(array(
    'post_type'      => 'portfolio',
    'posts_per_page' => 9,
    'orderby'        => 'date',
    'order'          => 'DESC'
));
if ($query->have_posts()) :
    while ($query->have_posts()) : $query->the_post();
        // template tags: the_title(), the_permalink(), the_post_thumbnail()
    endwhile;
    wp_reset_postdata();
endif;

Você também pode criar templates específicos, como single-portfolio.php ou archive-portfolio.php, seguindo a hierarquia de templates do WordPress. Dominar essa parte é fundamental no desenvolvimento de temas personalizados.

Perguntas Frequentes (FAQ)

Preciso de um plugin para criar CPTs?

Não, é possível registrar via functions.php. Porém, usar um plugin torna o código independente do tema e facilita a migração.

CPT afeta o desempenho do site?

Não, CPTs são tão eficientes quanto posts normais. O impacto depende do volume de conteúdo e da forma como você realiza as consultas.

Posso adicionar campos personalizados a um CPT?

Sim, você pode usar campos personalizados nativos ou plugins como ACF para criar campos adicionais de forma visual.

Como criar taxonomias para o CPT?

Use a função register_taxonomy() e associe ao CPT através do parâmetro taxonomies em register_post_type.

Onde aprender mais sobre desenvolvimento WordPress?

Confira nosso guia de desenvolvimento WordPress completo para aprofundar seus conhecimentos em temas, plugins e melhores práticas.

Conclusão

Custom Post Types são uma ferramenta poderosa para estender o WordPress além do convencional. Com eles você organiza o conteúdo de forma lógica, melhora a experiência do administrador e cria websites mais robustos e escaláveis. Lembre-se de planejar a estrutura antes de codificar e utilizar os parâmetros corretos para cada necessidade. Se você deseja levar seu site a outro nível, nossa equipe está pronta para ajudar com desenvolvimento WordPress completo e soluções sob medida.

Conteúdo recomendado
S9Bet — Bônus de R$5.000 + 500 giros grátis no cadastro
Cassino Online Premium no Brasil
2.500+ jogos certificados com saque PIX instantâneo
Cadastre-se grátis na s9bet.com e receba até R$5.000 + 500 giros grátis distribuídos nos primeiros 4 depósitos, com rollover justo de 30x e sem letras miúdas.
Jogos: Slots, Cassino Ao Vivo, Roleta, Blackjack, Bacará, Game Shows · Bônus: Bônus de boas-vindas de até R$5.000 + 500 giros grátis nos primeiros 4 depósitos (rollover 30x)
S9Bet — Cassino Online Premium no Brasil
Cassino Online Premium no Brasil
2.500+ jogos certificados com saque PIX instantâneo
Cadastre-se grátis na s9bet.com e receba até R$5.000 + 500 giros grátis distribuídos nos primeiros 4 depósitos, com rollover justo de 30x e sem letras miúdas.
2.500+ jogos certificados com saque PIX instantâneo
Jogos: Slots, Cassino Ao Vivo, Roleta, Blackjack, Bacará, Game Shows
Bônus: Bônus de boas-vindas de até R$5.000 + 500 giros grátis nos primeiros 4 depósitos (rollover 30x)
Ver oferta da S9Bet