Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🚀 Come creare una pagina archivio per i custom post type in WordPress

🚀 Come creare una pagina archivio per i custom post type in WordPress

Quando un sito supera la fase "blog più qualche pagina", i post e le categorie standard non bastano più. Portfolio, team, testimonianze, case study, offerte di lavoro: tutto questo ha bisogno di una struttura propria, invece di essere stipato nel flusso generale dei post con escamotage basati sulle categorie.

WordPress risolve questo problema con i custom post type. Ma creare un CPT non è sufficiente; serve anche una pagina dove tutte le voci di quel tipo siano raccolte insieme: una pagina archivio. Senza, i visitatori semplicemente non vedranno i tuoi elementi del portfolio o i membri del team presentati come un blocco unitario.

I plugin di griglia come Essential Grid gestiscono l'aspetto visivo, ma aggiungono CSS e JS extra. Su progetti piccoli questo passa inosservato, ma su un sito con decine di migliaia di visitatori ogni kilobyte conta. Il meccanismo di archivio nativo di WordPress offre la stessa funzionalità senza overhead sul frontend, e si configura in soli 10 minuti.

💡 Panoramica rapida:

  • Crea un custom post type tramite CPT UI e attiva subito il supporto all'archivio nelle impostazioni
  • Scrivi un template personalizzato per un controllo preciso del layout, se necessario
  • Configura i metadati SEO tramite Yoast SEO: titolo, descrizione e og:image per la pagina archivio
  • Disattiva la sidebar e aggiungi il markup Open Graph se necessario

1. Creare un custom post type

Il modo più semplice e affidabile per registrare un CPT senza scrivere una sola riga di codice è il plugin Custom Post Type UI. È installato su oltre un milione di siti ed è mantenuto dal 2010, e l'interfaccia è intuitiva: i campi del modulo corrispondono uno a uno agli argomenti della funzione register_post_type().

Pagina del plugin Custom Post Type UI nella repository di WordPress

Dopo aver installato il plugin, vai su CPT UI → Add/Edit Post Types. Compila i campi minimi:

  • Post Type Slug: caratteri latini, senza spazi (ad esempio portfolio)
  • Plural Label: "Portfolio"
  • Singular Label: "Lavoro"

Puoi lasciare le impostazioni rimanenti ai valori predefiniti; i valori di default coprono la stragrande maggioranza degli scenari tipici. Clicca Add Post Type e il nuovo tipo apparirà nel pannello di amministrazione come voce di menu separata.

2. Configurare la pagina archivio

Perché le voci del nuovo tipo siano raccolte in una pagina separata, devi attivare esplicitamente il supporto all'archivio. È disattivato per impostazione predefinita.

Vai su CPT UI → Edit Post Types e seleziona il tipo che hai creato dall'elenco:

Pagina di modifica del custom post type in CPT UI

Scorri fino alla sezione Settings e compila due campi chiave:

Campi delle impostazioni Has Archive e Custom Rewrite Slug in CPT UI
  • Has Archive: imposta su True. Questo è l'interruttore per la pagina archivio.
  • Custom Rewrite Slug: lo slug al quale l'archivio sarà accessibile. Di solito corrisponde allo slug del post type (ad esempio portfolio).

Salva le modifiche e vai a http://YOUR_SITE/portfolio. Vedrai un elenco di tutte le voci di questo tipo, stilizzato con il template standard archive.php del tema attivo:

Esempio di pagina archivio per il custom post type portfolio

La pagina di base è pronta. Se l'aspetto standard è sufficiente, puoi fermarti qui. Ma nella maggior parte dei casi vorrai perfezionare l'estetica.

3. Template personalizzato archive-{posttype}.php

WordPress usa una gerarchia di template chiara. Quando un visitatore arriva su una pagina archivio di un CPT, il core cerca i file in questo ordine:

  • archive-{posttype}.php
  • archive.php
  • index.php

Questo significa che ti basta creare un file chiamato archive-portfolio.php (dove portfolio è lo slug del tuo post type), e WordPress lo caricherà automaticamente.

Procedura:

Copia il contenuto del file archive.php del tuo tema in un nuovo file archive-portfolio.php. Poi modifica il markup in base alle tue esigenze: nascondi la data se non è rilevante per un portfolio; mostra la miniatura in una dimensione diversa; sostituisci il the_excerpt() standard con the_content().

1<?php
2/* Template for Portfolio archive — overrides archive.php */
3
4if ( have_posts() ) {
5 while ( have_posts() ) {
6 the_post();
7 // Your custom markup here
8 the_post_thumbnail( 'medium' );
9 the_title( '<h3>', '</h3>' );
10 the_excerpt();
11 }
12}

Se lavori con un tema FSE (Block Theme), il template archivio si crea nell'editor del sito: Aspetto → Editor → Template → Aggiungi nuovo template → Archivio: Portfolio. Niente PHP, solo blocchi, ma la logica è la stessa: layout personalizzato per un CPT specifico.

4. Ottimizzazione SEO per la pagina archivio

Una pagina archivio non è solo un URL di servizio. I motori di ricerca la indicizzano e può facilmente generare traffico per query commerciali come "portfolio studio web" o "team agenzia".

Se hai Yoast SEO installato, i metadati per gli archivi dei CPT si configurano in un unico posto:

Impostazioni dei tipi di contenuto in Yoast SEO per i custom post

Apri Yoast SEO → Impostazioni → Tipi di contenuto, trova il tuo Custom Post Type ed espandi la sezione. Imposta i template per titolo e meta descrizione:

Campi template per titolo e descrizione della pagina archivio in Yoast SEO

Template consigliati:

  • Titolo: %%pt_plural%% %%page%%, %%sitename%%
  • Meta descrizione: %%pt_plural%%, work samples, case studies and projects. %%sitename%%

Yoast sostituisce automaticamente le variabili %%pt_plural%% e %%pt_single%% dalle impostazioni del tuo CPT. Non dimenticare di disattivare noindex per la pagina archivio se è attivo per default; la casella Mostra nei risultati di ricerca deve essere attiva.

5. Markup Open Graph e sidebar

Per garantire che un'immagine venga caricata quando si condivide il link della pagina archivio sui social media, aggiungi og:image tramite l'hook wp_head. Inserisci il codice nel file functions.php del tuo tema attivo o tramite il plugin Code Snippets:

1add_action( 'wp_head', 'cpt_archive_og_image' );
2function cpt_archive_og_image() {
3 if ( is_post_type_archive( 'portfolio' ) ) {
4 echo '<meta property="og:image" content="' .
5 get_template_directory_uri() . '/images/portfolio-og.jpg' . '" />';
6 }
7}

La condizione is_post_type_archive() si attiva solo sulla pagina archivio del CPT specificato, quindi il markup non influenzerà altre pagine. Posiziona l'immagine nella cartella del tema o caricala tramite la libreria media e usa l'URL diretto.

Un ultimo tocco: la sidebar. Sulle pagine archivio spesso non è necessaria, specialmente per portfolio o team dove la larghezza delle card è importante. La maggior parte dei temi moderni permette di disattivare la sidebar nelle impostazioni della pagina:

Impostazioni di attivazione della sidebar nell'editor visivo del tema

Nei temi a blocchi, passa il template a Larghezza intera nelle impostazioni della pagina archivio. Nei temi classici, cerca Attributi pagina → Template → Larghezza intera nel personalizzatore o nel metabox di modifica.

📺 Video: l'intero processo in 8 minuti

Una breve demo in inglese che copre la creazione del CPT, l'attivazione dell'archivio e un template personalizzato dal primo clic alla pagina finita:

⁉️🤔 Domande frequenti

Perché la pagina archivio restituisce un errore 404 dopo aver creato il CPT?

Molto probabilmente non hai attivato il parametro Has Archive. Vai su CPT UI → Edit Post Types, trova il tuo tipo, imposta Has Archive su True e specifica un Custom Rewrite Slug. Dopo aver salvato, ricordati di andare su Impostazioni → Permalink e cliccare "Salva modifiche"; questo svuota la cache delle regole di riscrittura.

Posso evitare il plugin CPT UI?

Sì, i custom post type possono essere registrati in functions.php tramite la funzione register_post_type(). Richiede circa 15-20 righe di codice, un paio di minuti per uno sviluppatore. Il plugin fornisce semplicemente un'interfaccia visiva e previene errori di battitura negli argomenti.

Come faccio a mostrare le voci del CPT in homepage?

Aggiungi 'has_archive' => true agli argomenti di register_post_type(), e per includere le voci nel feed principale, imposta 'public' => true e 'exclude_from_search' => false. Per un output mirato, usa WP_Query con l'argomento 'post_type' => 'portfolio'.

Qual è la differenza tra archive-{posttype}.php e taxonomy-{taxonomy}.php?

Il primo gestisce la pagina con TUTTE le voci del CPT; il secondo gestisce il filtraggio per un termine specifico di tassonomia (ad esempio, "Tipo progetto: landing page"). Entrambi seguono la gerarchia dei template ma si attivano su URL diversi.

Un template personalizzato è obbligatorio?

No. Se l'archive.php standard ti va bene, attiva semplicemente Has Archive e usalo. Un template personalizzato serve quando hai bisogno di un markup unico: dimensioni delle miniature diverse, nessuna data, una griglia invece di un elenco.

Cosa fare se il template standard non funziona per te?

Una pagina archivio per i custom post è qualcosa che si configura una volta e poi si dimentica. CPT UI più qualche riga in functions.php coprono completamente la questione: niente plugin all-in-one, niente codice extra sul frontend.

Se dopo aver letto hai ancora domande su una combinazione specifica di tema e plugin, lascia un commento sotto il post. Esamineremo il tuo caso separatamente.