Monday, 26 Oct 2026

Recursos y herramientas exclusivas para expertos en diseño y desarrollo web

Explorar
BiblioWeb

Biblioweb.es

Todo sobre tecnología web

  • Home
  • WordPress
    WordPress
    • Todo sobre WordPress26
    • Plugins de WordPress16
    • Desarrollo web y plugins15
    Rendimiento y seguridad
    • Hosting y rendimiento8
    • Ciberseguridad web7
    • Solución de errores5
    Negocio e IA
    • IA y automatización10
    • WooCommerce y tiendas online6
    Lo último
    Restaurant Menu Widget — Plugin di WordPress27 Sep 2026JetStudio Bookings — Plugin per WordPress27 Sep 2026SC Heatmap — Plugin di WordPress27 Sep 2026
    Ver el blog completoHistorial de noticiasSobre nosotrosNewsletter semanal
  • Plugins de WordPress
    Fichas de plugins
    • WP Translate Master
    • Cart Tool Kit
    • SC Heatmap
    • JetStudio Bookings
    • Restaurant Menu Widget
    • WP SEO Pro
    • Rank Math SEO en 2026
    • WP Rocket
    • WPCode
    • AI Engine para WordPress
    Comparativas y guías
    • I migliori plugin SEO per WordPress
    • I migliori plugin di IA per WordPress
    • I migliori plugin di prenotazione per WordPress
    • WordPress multiidioma
    • Cómo crear un formulario de contacto en WordPress
    • Stripe o PayPal
    Por temática
    • Plugins de WordPress16
    • WooCommerce y tiendas online6
    • Desarrollo web y plugins15
    • IA y automatización10
    • Hosting y rendimiento8
    BibliotecaPluginteca

    Los plugins de WordPress que desarrollamos: qué hace cada uno, cómo se ve en acción y dónde conseguirlo.

    Entrar en la Pluginteca
    Toda la categoría Plugins de WordPressHerramientas gratis
  • Herramientas
    Herramientas gratis, sin registro y desde el navegador
    Generador de contraseñasContraseñas largas y aleatorias sin salir del navegador.Generador de QRCódigos QR en PNG de alta resolución, sin caducidad.Contador de palabrasPalabras, caracteres y tiempo de lectura en vivo.Formattatore JSONFormatea, valida y localiza el error exacto.Convertitore a WebPPNG, JPG y PDF a WebP para que la web cargue…PDF a WebPCada página del PDF, en una imagen ligera.Comprobador de emailsSintaxis, correos temporales y registros MX.Compresor de vídeoBaja el peso del vídeo sin subirlo a ningún servidor.Vídeo a MP3Extrae el audio de un vídeo en un par de clics.Firmas de emailFirma en HTML lista para Gmail y Outlook.
    También te sirveHerramientas externas que merecen la pena

    DNS Checker, Query Monitor, Local WP y el resto del kit que usamos a diario, con para qué sirve cada una.

    Ver la selección
    Todas las herramientasPlugintecaRecíbelas por correo
  • Pluginteca
  • Español
  • English
  • 🇨🇳 中文(简体)
  • Français
  • Deutsch
  • Italiano ✓
Newsletter
  • WordPress
  • Plugins de WordPress
  • WooCommerce
  • IA para WordPress
  • Seguridad
  • Herramientas gratis
  • Ver todo
BiblioWebBiblioWeb
Font ResizerAa
  • WordPress
  • Plugins
  • WooCommerce
  • Errores
  • Herramientas
Search
  • Home
  • WordPress
    • Todo sobre WordPress
    • Plugins WordPress
    • Sviluppo Web e Plugin
    • IA y Automatización web
    • WooCommerce
    • Hosting y Rendimiento Web
    • Cibersicurezza e Sicurezza Web
    • Solución de errores web
  • Plugins de WordPress
    • Rank Math SEO
    • AI Engine
    • WP Rocket
    • WPCode
    • WP Translate Master
    • Cart Tool Kit
    • SC Heatmap
    • JetStudio Bookings
    • Restaurant Menu Widget
    • WP SEO Pro
  • Herramientas
    • Generatore di Password
    • Generatore di Codice QR
    • Contatore di Parole
    • Formattatore JSON
    • Conversor Imagenes a WebP
    • Comprobador de Correos Electrónicos
    • Compressore Video per Web
    • Generatore di Firme Email
    • Convertitore da Video a MP3
    • Convertitore da PDF a WebP
  • Pluginteca
  • Blog
    • Español
    • English
    • 🇨🇳 中文(简体)
    • Français
    • Deutsch
    • Italiano ✓
Síguenos
© 2026 BiblioWeb — Todos los derechos reservados.
Portada » Blog » Custom Post Types in WordPress: guida completa
Sviluppo Web e Plugin

Custom Post Types in WordPress: guida completa

Adrián Alcalá
Actualizado: 08/08/2026 21:10
By Adrián Alcalá
Share
15 min de lectura
Custom Post Types in WordPress: guida completa
SHARE

WordPress è nato come piattaforma di blog, ma da molto tempo ha smesso di essere solo questo: oggi gestisce portfolio, immobiliari, accademie, directory aziendali e interi negozi. Il pezzo che rende possibile questa versatilità sono i custom post type di WordPress: tipi di contenuto personalizzati che convivono con i post e le pagine, ma con il loro proprio nome, i loro propri campi, i loro propri URL e la loro propria sezione nella bacheca. Se hai mai provato a gestire "progetti", "ricette" o "corsi" basandoti su post normali e categorie, sai quanto velocemente si trasforma in un caos. In questa guida completa imparerai cos'è esattamente un Custom Post Type (CPT), quando ha senso crearlo e quando no, come registrarlo con codice PHP completo e corretto, come aggiungervi tassonomie proprie, come mostrarlo nel tuo tema e quali implicazioni ha per il SEO. Al termine potrai strutturare qualsiasi progetto con la solidità di uno sviluppatore professionale.

Índice
Cosa sono i custom post type di WordPressQuando creare un CPT (e quando no)Come registrare un custom post type con codiceTassonomie personalizzate: classificare il tuo nuovo contenutoCome mostrare i custom post type nel tuo temaCampi personalizzati: i dati che completano la schedaSEO e custom post type: cosa devi controllareDomande frequentiConclusión

Cosa sono i custom post type di WordPress

In WordPress, ogni contenuto è tecnicamente un "post": i post del blog (post), le pagine (page), gli allegati della mediateca (attachment), le revisioni o i menu di navigazione. Tutti vengono salvati nella stessa tabella del database (wp_posts) e si distinguono per il valore della colonna post_type. Un custom post type non è altro che un nuovo valore in quella colonna, registrato da te, con le sue proprie regole: quali caratteristiche ammette (editor, immagine in evidenza, estratto), come si chiama nel menu, quale URL hanno i suoi elementi e se appare o meno nei risultati di ricerca.

Esempi classici in cui i custom post type di WordPress brillano:

  • Portfolio: progetti con immagine, cliente e tecnologia utilizzata.
  • Immobiliare: proprietà con prezzo, superficie e ubicazione.
  • Accademia: corsi e lezioni con durata e livello.
  • Ristorante: piatti con allergeni e prezzo.
  • Eventi: con data, luogo e capienza.

Infatti, li usi già senza saperlo: i prodotti di WooCommerce sono un CPT chiamato product, e i moduli di quasi ogni plugin vengono anch'essi salvati come tipi di contenuto propri.

Quando creare un CPT (e quando no)

La domanda chiave: questo contenuto è concettualmente distinto da un post del blog? Se la risposta è sì (ha senso elencarlo separatamente, con i propri archivi e la propria struttura), è un candidato per un CPT. Se vuoi solo raggruppare i post per tematica, lo strumento corretto sono le categorie e i tag di sempre.

Situazione Soluzione adeguata
Separare il blog per tematiche Categorie
Schede di prodotti, corsi, immobili… Custom Post Type
Contrassegnare i post con parole chiave singole Tag
Classificare un CPT (genere di un libro, zona di un immobile) Tassonomia personalizzata
Dati specifici di ogni elemento (prezzo, data, ISBN) Campi personalizzati (post meta)

Un'altra decisione preliminare: codice o plugin? Plugin come Custom Post Type UI o Pods permettono di registrare CPT dal pannello senza scrivere PHP, e sono perfettamente validi. In cambio, generano dipendenza: se il plugin viene disattivato, il contenuto non viene cancellato ma scompare dalla bacheca. La registrazione tramite codice, che vedremo ora, è più leggera, portabile e controllabile, ed è come la fanno tutti i temi e i plugin professionali.

You Might Also Like

La REST API di WordPress: cos'è e come usarla
Cos'è Elementor e come usarlo: guida per iniziare
Shortcode di WordPress: cosa sono e come creare i tuoi
Come installare e configurare Yoast SEO in WordPress

Come registrare un custom post type con codice

Tutto ruota attorno a una funzione: register_post_type(), che deve essere eseguita nell'hook init. Questo è un registro completo e commentato per un CPT di portfolio, pronto all'uso:

<?php
function biblioweb_registrar_cpt_proyecto() {
    $labels = array(
        'name'               => 'Proyectos',
        'singular_name'      => 'Proyecto',
        'menu_name'          => 'Porfolio',
        'add_new'            => 'Añadir nuevo',
        'add_new_item'       => 'Añadir nuevo proyecto',
        'edit_item'          => 'Editar proyecto',
        'new_item'           => 'Nuevo proyecto',
        'view_item'          => 'Ver proyecto',
        'search_items'       => 'Buscar proyectos',
        'not_found'          => 'No se han encontrado proyectos',
        'not_found_in_trash' => 'No hay proyectos en la papelera',
        'all_items'          => 'Todos los proyectos',
    );

    $args = array(
        'labels'       => $labels,
        'public'       => true,
        'has_archive'  => true,
        'menu_position'=> 20,
        'menu_icon'    => 'dashicons-portfolio',
        'rewrite'      => array( 'slug' => 'proyectos', 'with_front' => false ),
        'supports'     => array( 'title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'custom-fields' ),
        'show_in_rest' => true, // Necesario para el editor de bloques y la REST API.
        'taxonomies'   => array(),
    );

    register_post_type( 'proyecto', $args );
}
add_action( 'init', 'biblioweb_registrar_cpt_proyecto' );

Ripassiamo gli argomenti che generano più dubbi:

  • public: in true, il CPT ha URL proprie, appare nella bacheca ed è visibile. Per contenuti interni (ad esempio, testimonianze che vengono mostrate solo incorporate) si può affinare con publicly_queryable y exclude_from_search.
  • has_archive: crea la pagina di archivio in tudominio.com/proyectos/ con l'elenco di tutti gli elementi.
  • rewrite: definisce lo slug degli URL. with_front => false evita di ereditare prefissi dalla struttura dei permalink (come /blog/).
  • supports: quali caselle appaiono nell'editor. Se il tuo CPT non necessita di un editor di testo, rimuovilo e il modulo risulterà più pulito.
  • show_in_rest: indispensabile in true se vuoi usare Gutenberg con questo CPT o consumarlo dalla REST API.
  • menu_icon: qualsiasi icona della libreria Dashicons, o il percorso a un proprio SVG.

Un avviso critico: dopo aver registrato o modificato un CPT, visita Ajustes → Enlaces permanentes e clicca su «Salva modifiche». Questo gesto rigenera le regole di riscrittura; se non lo fai, le nuove URL restituiranno un errore 404 e perderai un bel po' di tempo cercando un errore che non è nel tuo codice.

Dove posizionarlo? In un plugin proprio o in un gestore di snippet come WPCode, che abbiamo analizzato a fondo qui. Evita il functions.php del tema: un CPT è funzionalità, non design, e deve sopravvivere a un cambio di tema.

Tassonomie personalizzate: classificare il tuo nuovo contenuto

Le categorie e i tag standard appartengono agli articoli. Per classificare un CPT la cosa corretta è registrare tassonomie proprie con register_taxonomy(). Continuando con il portfolio, creiamo una tassonomia «Tipo di progetto»:

<?php
function biblioweb_registrar_taxonomia_tipo() {
    $labels = array(
        'name'          => 'Tipos de proyecto',
        'singular_name' => 'Tipo de proyecto',
        'search_items'  => 'Buscar tipos',
        'all_items'     => 'Todos los tipos',
        'edit_item'     => 'Editar tipo',
        'add_new_item'  => 'Añadir nuevo tipo',
    );

    register_taxonomy(
        'tipo_proyecto',
        array( 'proyecto' ),
        array(
            'labels'       => $labels,
            'hierarchical' => true, // true = como categorías; false = como etiquetas.
            'rewrite'      => array( 'slug' => 'tipo-proyecto' ),
            'show_in_rest' => true,
        )
    );
}
add_action( 'init', 'biblioweb_registrar_taxonomia_tipo' );

Il parametro hierarchical decide il comportamento: in true funziona come le categorie (con gerarchia padre-figlio e caselle di controllo); in false, come i tag (testo libero). Ogni termine genera automaticamente la propria pagina di archivio: tudominio.com/tipo-proyecto/diseno-web/.

Come mostrare i custom post type nel tuo tema

WordPress risolve la presentazione tramite la gerarchia dei template. Per il nostro CPT proyecto cercherà, in quest'ordine:

  1. single-proyecto.php per la scheda individuale (se non esiste, usa single.php).
  2. archive-proyecto.php per l'elenco (se non esiste, usa archive.php e poi index.php).
  3. taxonomy-tipo_proyecto.php per gli archivi della tassonomia.

Se il tuo tema è a blocchi o usi un page builder, normalmente potrai assegnare template al CPT dalla sua interfaccia. E per elenchi personalizzati in qualsiasi template o shortcode, la query si fa con WP_Query:

<?php
$proyectos = new WP_Query( array(
    'post_type'      => 'proyecto',
    'posts_per_page' => 6,
    'tax_query'      => array(
        array(
            'taxonomy' => 'tipo_proyecto',
            'field'    => 'slug',
            'terms'    => 'diseno-web',
        ),
    ),
) );

if ( $proyectos->have_posts() ) :
    while ( $proyectos->have_posts() ) : $proyectos->the_post();
        the_title( '<h3>', '</h3>' );
        the_post_thumbnail( 'medium' );
    endwhile;
    wp_reset_postdata();
endif;

Non dimenticare mai wp_reset_postdata() dopo un loop personalizzato: ripristina la query principale ed evita strani effetti collaterali nel resto della pagina. Il riferimento completo di tutti gli argomenti disponibili si trova nella documentazione ufficiale dei post type di developer.wordpress.org.

Campi personalizzati: i dati che completano la scheda

Un CPT definisce il «contenitore», ma i dati specifici (prezzo, cliente, data di consegna) vivono in campi personalizzati (post meta). Puoi gestirli in tre modi: con la casella nativa dei campi personalizzati (spartana ma funzionale), con codice tramite register_post_meta() y get_post_meta(), o con plugin specializzati come Advanced Custom Fields (ACF) o Meta Box, che generano interfacce di editing comode con validazione e tipi di campo avanzati. Per progetti seri, la combinazione CPT via codice + ACF per i campi è probabilmente lo standard del settore.

<?php
// Registrar un campo y exponerlo en la REST API:
register_post_meta( 'proyecto', 'cliente', array(
    'type'         => 'string',
    'single'       => true,
    'show_in_rest' => true,
    'sanitize_callback' => 'sanitize_text_field',
) );

// Leerlo en la plantilla:
$cliente = get_post_meta( get_the_ID(), 'cliente', true );

SEO e custom post type: cosa devi controllare

Un CPT ben progettato è una benedizione per la SEO: genera archivi puliti, URL semantiche e una struttura chiara. Ma è opportuno rivedere quattro punti:

  • Sitemap: verifica che il tuo plugin SEO includa il nuovo tipo di contenuto nella sitemap XML. Sia Yoast che Rank Math, di cui abbiamo analizzato la versione gratuita, rilevano i CPT pubblici e permettono di attivarli o escluderli per tipo.
  • Indicizzazione selettiva: se il CPT è contenuto di supporto (testimonianze, blocchi riutilizzabili), contrassegnalo come non indicizzabile o registralo direttamente con public => false.
  • Slug con intenzione: /proyectos/ dice più di /cpt_portfolio/. Lo slug del rewrite è una decisione SEO, e cambiarlo dopo implica reindirizzamenti.
  • Contenuto nell'archivio: la pagina di archivio generata automaticamente è solitamente un semplice elenco; valutare una pagina con testo introduttivo proprio può fare la differenza per posizionare la keyword principale del tipo di contenuto.

Domande frequenti

Cosa succede al contenuto se disattivo il plugin che registra il CPT?

Nulla viene cancellato: gli elementi rimangono nel database. Semplicemente smettono di essere mostrati nel backend e le loro URL restituiscono 404, perché WordPress non riconosce più quel tipo di contenuto. Riattivando la registrazione (plugin o snippet), tutto riappare intatto. Per questo è importante mantenere la registrazione in qualcosa di indipendente dal tema.

Custom post type o categorie? Non ho ancora chiaro quale usare

Usa le categorie quando vuoi organizzare articoli del blog che condividono il formato. Usa un CPT quando il contenuto ha una natura propria: campi diversi, template diverso e senso come sezione indipendente del sito web. Un suggerimento pratico: se ti ritrovi a voler nascondere quelle «notizie» dal blog principale, è quasi certo che dovrebbero essere un custom post type.

Quanti custom post type posso creare?

Non c'è un limite tecnico rilevante: tutti condividono la tabella wp_posts e il costo di registrare ogni tipo è minimo. Il limite ragionevole è organizzativo: se superi i sei o otto tipi, verifica se alcuni non dovrebbero essere in realtà tassonomie o campi dello stesso tipo. Riserva nomi con prefisso (ad esempio bw_proyecto) se distribuisci il tuo codice, per evitare collisioni con altri plugin.

Perché i miei custom post type danno errore 404?

Nel 95% dei casi, a causa delle regole di riscrittura: WordPress non ha ancora «imparato» le nuove URL. Vai a Ajustes → Enlaces permanentes e salva senza cambiare nulla. Se persiste, verifica che public sia true, che lo slug del rewrite non si scontri con una pagina esistente e che la registrazione venga eseguita nell'hook init ad ogni caricamento, non solo all'attivazione.

Conclusión

I custom post type di WordPress sono lo strumento che trasforma un blog in un vero CMS su misura: portfolio, cataloghi, directory o accademie, ogni contenuto con la sua struttura, le sue URL e il suo posto nel backend. La ricetta professionale si riassume in tre passaggi: registrare il tipo con register_post_type() nell'hook init (e salvare i permalink), classificarlo con tassonomie proprie tramite register_taxonomy(), e completare le schede con campi personalizzati. Da lì, la gerarchia dei template e WP_Query ti danno il controllo totale su come viene mostrato tutto. Inizia con un solo tipo di contenuto reale del tuo progetto, registralo tramite codice in uno snippet o plugin proprio, e verifica nel backend cosa cambia gestire «progetti» veri invece di articoli mascherati. Questa chiarezza strutturale la apprezzerai tu, la apprezzeranno i tuoi clienti e la apprezzerà Google.

Share This Article
Email Copiar enlace Print
ByAdrián Alcalá
Síguele:
Adrián Alcalá es desarrollador WordPress y consultor SEO, autor del plugin WP Translate y creador de BiblioWeb. Desde aquí comparte guías, tutoriales y herramientas gratuitas para quienes crean, optimizan y posicionan páginas web. Lleva años ayudando a negocios de toda España a sacar el máximo partido a WordPress, y todo lo que publica está probado en proyectos reales.
Previous Article Shortcode di WordPress: cosa sono e come crearli Shortcode di WordPress: cosa sono e come creare i tuoi
Next Article La REST API di WordPress: cos'è e come usarla La REST API di WordPress: cos'è e come usarla
Ilustración del plugin Restaurant Menu Widget: carta de restaurante con platos y precios editables en Elementor
Restaurant Menu Widget — Plugin di WordPress
Plugins WordPress
Ilustración del plugin JetStudio Bookings: formulario de citas por pasos con calendario y bandeja de solicitudes
JetStudio Bookings — Plugin per WordPress
Plugins WordPress
Ilustración del plugin SC Heatmap: mapa de calor de clics y scroll sobre una web, con los datos en tu servidor
SC Heatmap — Plugin di WordPress
Plugins WordPress
Accesibilidad web en WordPress con IA
Accessibilità web in WordPress: revisionarla con l'IA in un pomeriggio
IA & Automazione web

También te puede interesar

Diseñar Web WordPress - Diseña tu Web PRO en WordPress: El Tema Perfecto para un Impacto Brutal (y trucos IA que te volarán
Sviluppo Web e Plugin

Come scegliere il tema perfetto per progettare il tuo sito web in WordPress

28/09/2026
Plugins WordPress - No empieces sin ellos Los 5 Plugins WordPress Esenciales que todo novato necesita para una web de 10
Sviluppo Web e Plugin

I 5 plugin essenziali di WordPress per principianti

28/09/2026
WordPress senza programmare: no-code
Sviluppo Web e Plugin

WordPress senza programmare: cosa puoi costruire con il no-code

28/09/2026
Cos'è un child theme di WordPress e come crearlo
Sviluppo Web e Plugin

Cos'è un child theme in WordPress e come crearlo

08/08/2026
Mostra altro
  • Temas:
  • WordPress
  • Plugins WordPress
  • Sviluppo Web e Plugin
  • IA & Automazione web
  • Hosting & Prestazioni Web
  • Cibersicurezza e Sicurezza Web
  • WooCommerce
  • Risoluzione di problemi ed errori web
BiblioWeb

Biblioweb.es

Actualidad de tecnología web

Información en la que puedes confiar: guías y soluciones prácticas de tecnología web — WordPress, plugins, ciberseguridad, hosting, rendimiento y solución de errores.

Rss

Enlaces de interés

  • Sobre nosotros
  • Contatti
  • Strumenti gratuiti
  • Pluginteca

Recibe nuestras nuevas guías de WordPress en tu correo. Suscríbete a la newsletter.

Legale

  • Note Legali
  • Termini e Condizioni
  • Informativa sui cookie
  • Informativa sulla privacy

Últimas novedades

Ilustración del plugin Restaurant Menu Widget: carta de restaurante con platos y precios editables en Elementor

Restaurant Menu Widget — Plugin di WordPress

27/09/2026
Continua a leggere
Ilustración del plugin JetStudio Bookings: formulario de citas por pasos con calendario y bandeja de solicitudes

JetStudio Bookings — Plugin per WordPress

27/09/2026
Continua a leggere

© 2026 BiblioWeb — Todos los derechos reservados.

Gestionar consentimiento
Utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. Lo hacemos para mejorar la experiencia de navegación y para mostrar anuncios (no) personalizados. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o los ID's únicos en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Always active
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferenze
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que se utiliza exclusivamente con fines estadísticos anónimos. Sin un requerimiento, el cumplimiento voluntario por parte de tu proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarte.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.
  • Manage options
  • Manage services
  • Manage {vendor_count} vendors
  • Read more about these purposes
Ver preferencias
  • {title}
  • {title}
  • {title}
Accede a BiblioWeb
Usuario o correo electrónico
Contraseña

¿Has olvidado tu contraseña?