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âmetro | Descrição | Exemplo |
|---|---|---|
labels | Define os rótulos (nome, singular, menu, etc.) | 'name' => 'Portfólio' |
public | Controla se o CPT é visível no admin e no front-end | true |
has_archive | Habilita uma página de arquivo (ex: /portfolio) | true |
supports | Quais campos são exibidos no editor (title, editor, thumbnail, etc.) | array('title','editor') |
rewrite | Define a estrutura da URL (slug) | array('slug' => 'projetos') |
show_in_rest | Permite usar o REST API e o Gutenberg | true |
menu_icon | Ícone do menu administrativo (dashicons ou SVG) | 'dashicons-portfolio' |
taxonomies | Taxonomias 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:
- Portfolio: perfeito para agências exibirem trabalhos realizados, com suporte a thumbnail e galeria.
- Depoimentos: permite gerenciar avaliações de clientes de forma independente e exibi-las em um slider ou grid.
- Produtos: mesmo sem WooCommerce, é possível criar um catálogo simples com campos personalizados de preço e variações.
- Eventos: com campos de data, local e tipo, ideal para sites de eventos ou cronogramas.
- 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.