Glossario

Cosa sono i custom post types di WordPress?

20 maggio 2026

Un custom post type (CPT) di WordPress è un tipo di contenuto oltre ai cinque integrati (post, page, attachment, revision, nav_menu_item). I CPT permettono di archiviare contenuti strutturati come prodotti, eventi, immobili, ricette, testimonianze o portfolio, ognuno con menu di amministrazione, schermata di modifica, tassonomie, struttura URL e gerarchia di template propri. I custom post types sono stati introdotti in WordPress 2.9 (dicembre 2009) e sono diventati l’approccio standard con register_post_type() in WordPress 3.0 (giugno 2010). Un CPT viene registrato in PHP tramite register_post_type( $slug, $args ) sul hook init o visualmente tramite plugin come Custom Post Type UI (oltre 700.000 installazioni attive), Pods (oltre 100.000) e Meta Box (oltre 400.000). Da WordPress 5.0 (dicembre 2018) i CPT possono abilitare l’editor a blocchi impostando show_in_rest su true, che li espone anche sulla REST API a /wp-json/wp/v2/<slug>. WooCommerce registra il CPT product oltre a shop_order, shop_coupon, product_variation e altri dieci. The Events Calendar usa tribe_events. ACF Pro può registrare i CPT tramite la sua interfaccia dalla versione 6.1 (marzo 2023). I custom post types restano nel 2025 la spina dorsale di qualunque sito WordPress non blog.

Quando usare un custom post type?

  • Prodotti e commerce (WooCommerce).
  • Eventi (Events Calendar tribe_events).
  • Immobili.
  • Portfolio.
  • Testimonianze, membri del team, FAQ.
  • Ricette con dati strutturati.
  • Offerte di lavoro.

Come registrare un custom post type

add_action( 'init', 'mysite_register_product_cpt' );

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

Argomenti importanti

ArgomentoFunzione
publicImposta show_ui, publicly_queryable, exclude_from_search di default.
show_in_restObbligatorio per l’editor a blocchi e endpoint REST.
has_archiveCrea un archivio a /<slug>/.
supportsFunzioni attive: title, editor, thumbnail, excerpt, custom-fields.
rewriteSlug URL.

Plugin contro tema

Registra sempre i CPT in un plugin, mai nel tema. Altrimenti cambiando tema il CPT scompare dal menu di amministrazione e il contenuto diventa inaccessibile.

Gerarchia di template

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

CPT e REST API

Con show_in_rest => true il CPT è disponibile a /wp-json/wp/v2/<rest_base>. I frontend headless consumano questo endpoint.

Plugin che registrano i CPT senza codice

  • Custom Post Type UI (oltre 700.000 installazioni).
  • ACF Pro 6.1+ (registra i CPT da marzo 2023).
  • Pods Framework.
  • Meta Box.
  • Toolset Types.

Prestazioni

  • Tutto il contenuto CPT vive in wp_posts. Prestazioni identiche fino a ~100.000 righe.
  • Non registrare più di 20 a 30 CPT per sito.
  • Flush rewrite rules una volta all’attivazione del plugin.
  • Centinaia di migliaia di voci: considera una tabella dedicata (WooCommerce HPOS dal 8.0 agosto 2023).

Errori comuni

  • Hook sbagliato. Usa init.
  • Dimenticare show_in_rest.
  • Non fare flush delle rewrite rules.
  • Registrazione nel tema.
  • Collisione di slug con una pagina.

Cosa controlla InspectWP

InspectWP rileva i custom post types nell’HTML renderizzato e interroga gli endpoint REST API quando esposti. Il report identifica i provider CPT popolari (WooCommerce, Events Calendar, ACF).

Controlla subito il tuo sito WordPress

InspectWP analizza il tuo sito WordPress per problemi di sicurezza, problemi SEO, conformità GDPR e prestazioni — gratuitamente.

Analizza gratis il tuo sito