Glossário

O que são custom post types do WordPress?

20 de maio de 2026

Um custom post type (CPT) do WordPress é um tipo de conteúdo além dos cinco embutidos (post, page, attachment, revision, nav_menu_item). CPTs permitem armazenar conteúdo estruturado como produtos, eventos, imóveis, receitas, depoimentos ou portfólios, cada um com seu próprio menu admin, tela de edição, taxonomias, estrutura de URL e hierarquia de templates. Os custom post types foram introduzidos no WordPress 2.9 (dezembro de 2009) e tornaram se a abordagem padrão com register_post_type() no WordPress 3.0 (junho de 2010). Um CPT é registrado em PHP via register_post_type( $slug, $args ) no hook init, ou visualmente via plugins como Custom Post Type UI (mais de 700.000 instalações ativas), Pods (mais de 100.000) e Meta Box (mais de 400.000). Desde o WordPress 5.0 (dezembro de 2018) CPTs podem habilitar o editor de blocos definindo show_in_rest como true, o que também os expõe na REST API em /wp-json/wp/v2/<slug>. O WooCommerce registra o CPT product mais shop_order, shop_coupon, product_variation e dez outros. The Events Calendar usa tribe_events. ACF Pro pode registrar CPTs via sua interface desde a versão 6.1 (março de 2023). Custom post types continuam sendo a espinha dorsal de qualquer site WordPress não blog em 2025.

Quando usar um custom post type?

  • Produtos de e commerce (WooCommerce).
  • Eventos (Events Calendar tribe_events).
  • Imóveis.
  • Portfólios.
  • Depoimentos, membros da equipe, FAQs.
  • Receitas com dados estruturados.
  • Vagas de emprego.

Como registrar um custom post type

add_action( 'init', 'mysite_register_product_cpt' );

function mysite_register_product_cpt() {
    $args = array(
        'labels'             => array( 'name' => 'Produtos', 'singular_name' => 'Produto' ),
        'public'             => true,
        'show_in_rest'       => true,
        'has_archive'        => true,
        'rewrite'            => array( 'slug' => 'produtos' ),
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
        'menu_icon'          => 'dashicons-cart',
    );
    register_post_type( 'product', $args );
}

Argumentos importantes

ArgumentoFunção
publicDefine show_ui, publicly_queryable, exclude_from_search por padrão.
show_in_restObrigatório para o editor de blocos e endpoint REST.
has_archiveCria um arquivo em /<slug>/.
supportsRecursos ativos: title, editor, thumbnail, excerpt, custom-fields.
rewriteSlug de URL.

Plugin contra tema

Registre CPTs sempre em um plugin, nunca no tema. Caso contrário, ao trocar de tema o CPT desaparece do menu admin e o conteúdo fica inacessível.

Hierarquia de templates

  • Single: single-product.php, single.php, singular.php, index.php.
  • Archive: archive-product.php, archive.php, index.php.

CPTs e REST API

Com show_in_rest => true o CPT fica disponível em /wp-json/wp/v2/<rest_base>. Frontends headless consomem esse endpoint.

Plugins que registram CPTs sem código

  • Custom Post Type UI (mais de 700.000 instalações).
  • ACF Pro 6.1+ (registra CPTs desde março de 2023).
  • Pods Framework.
  • Meta Box.
  • Toolset Types.

Desempenho

  • Todo conteúdo CPT vive em wp_posts. Desempenho idêntico até ~100.000 linhas.
  • Não registre mais de 20 a 30 CPTs por site.
  • Flush rewrite rules uma vez na ativação do plugin.
  • Centenas de milhares de entradas: considere tabela dedicada (WooCommerce HPOS desde 8.0 agosto de 2023).

Erros comuns

  • Hook errado. Use init.
  • Esquecer show_in_rest.
  • Não fazer flush das rewrite rules.
  • Registro no tema.
  • Colisão de slug com página.

O que o InspectWP verifica

O InspectWP detecta custom post types no HTML renderizado e rastreia endpoints REST API quando expostos. O relatório identifica provedores populares (WooCommerce, Events Calendar, ACF).

Verifique seu site WordPress agora

O InspectWP analisa seu site WordPress em busca de problemas de segurança, problemas de SEO, conformidade com GDPR e desempenho — gratuitamente.

Analise seu site grátis