Vuoi imparare come creare facilmente custom post type in WordPress? I custom post type trasformano un sito WordPress da una piattaforma di blog in un potente Content Management System (CMS).

Fondamentalmente, ti consentono di andare oltre i post e le pagine creando diversi tipi di contenuti per il tuo sito web.

In questo articolo, ti mostrerò come creare facilmente custom post type in WordPress. Ti insegnerò due metodi e potrai sceglie quello che per te è il più facile (o il più difficile se ami le sfide).

Creazione di custom post type in WordPress

Che cos’è un custom post type in WordPress?

I custom post type sono tipi di contenuto come post e pagine. Dal momento che WordPress si è evoluto da una semplice piattaforma di blog in un robusto CMS, il termine post è rimasto fedele ad esso. Tuttavia, un tipo di post può essere qualsiasi tipo di contenuto.

Per impostazione predefinita, WordPress viene fornito con questi tipi di post:

  • Post
  • Pagine
  • Attachment (allegato)
  • Revision (revisione)
  • Nav Menu (il menu di navigazione)

Puoi però creare i tuoi custom post type e dargli il nome che vuoi.

Ad esempio, se gestisci un sito Web di recensioni di film, probabilmente vorrai creare un tipo di post per le recensioni dei film. Questo tipo di post può avere diversi campi personalizzati e persino una propria struttura di categoria personalizzata (custom taxonomy).

Altri esempi di post type sono Portfolio, Testimonianze, Prodotti, ecc.

Molti plugin WordPress popolari utilizzano già tipi di post personalizzati per archiviare i dati sul tuo sito Web WordPress. Di seguito sono riportati alcuni dei principali plug-in che utilizzano tipi di post personalizzati.

  • WooCommerce: aggiunge un tipo di post personalizzato del prodotto al tuo sito WordPress.
  • WPForms: Crea un tipo di post wpforms per memorizzare tutti i tuoi moduli di contatto.
  • MemberPress: Aggiunge un tipo di post personalizzato memberpressproduct

Detto questo, diamo un’occhiata a come creare facilmente custom post type in WordPress per uso personale.

1. Creazione di un custom post type: il modo più semplice

Il modo più semplice per creare un custom post type in WordPress è utilizzare un plug-in. Questo metodo è consigliato ai neofiti perché è sicuro e super facile.

La prima cosa che devi fare è installare e attivare il plug-in Custom Post Type UI. Dopo l’attivazione, il plug-in aggiungerà una nuova voce di menu nel menu di amministrazione di WordPress chiamato CPT UI.

Ora vai su CPT UI » Aggiungi nuovo, per creare un nuovo tipo di post personalizzato.

Aggiungere un nuovo post type

Innanzitutto, devi fornire uno slug per il tuo tipo di post personalizzato. Questo slug verrà utilizzato nell’URL e nelle query di WordPress, quindi può contenere solo lettere e numeri e nessuno spazio vuoto.

Di seguito, devi fornire i nomi plurali e singolari per il tuo tipo di post personalizzato.

Successivamente, puoi fare clic sul collegamento che dice “Popola etichette aggiuntive in base alle etichette scelte”. In questo modo riempirai il resto dei campi delle etichette in basso in modo automatico.

Scorri verso il basso fino alla sezione “Etichette aggiuntive” e da qui puoi fornire una descrizione per il tuo custom post e modificare le etichette.

Labels del custom post type

Le etichette (labels) verranno utilizzate in tutta l’interfaccia utente di WordPress quando gestisci il contenuto in quel particolare tipo di post.

Successivamente, arriva l’opzione delle impostazioni del tipo di post. Da qui puoi impostare diversi attributi per il tuo tipo di post. Ogni opzione viene fornita con una breve descrizione che spiega cosa fa.

Impostazioni del custom post type

Ad esempio, puoi scegliere di non rendere gerarchico un tipo di post o invertirne l’ordine cronologico.

Sotto le impostazioni generali, vedrai l’opzione per selezionare le funzionalità di modifica che questo tipo di post dovrebbe supportare. Seleziona semplicemente le opzioni che vuoi includere.

Opzioni supportate

Infine, fai clic sul pulsante “Aggiungi tipo di post” per salvare e creare il tuo tipo di post personalizzato.

Questo è tutto, hai creato con successo il tuo tipo di post personalizzato. Puoi andare avanti e iniziare ad aggiungere contenuti.

Ti mostrerò come visualizzare il tuo tipo di post personalizzato sul tuo sito web più avanti in questo articolo.

2. Creazione di un custom post type: il modo manuale

Il problema con l’utilizzo di un plug-in è che i custom post type scompariranno quando il plug-in viene disattivato. Tutti i dati che hai in quei custom post type saranno ancora lì, ma il tuo post personalizzato non sarà registrato e non sarà accessibile dall’area di amministrazione.

Se non desideri installare un altro plug-in sul tuo sito web, puoi creare manualmente il tuo tipo di post personalizzato aggiungendo il codice richiesto nel file functions.php del tuo tema (meglio se nel tema child) o in un plug-in creato appositamente.

Innanzitutto, ti mostreremo un esempio rapido e pienamente funzionante in modo che tu capisca come funziona. Dai un’occhiata a questo codice:

// Funzione per creare il CPT
function create_posttype() {
 
    register_post_type( 'movies',
    // CPT Options
        array(
            'labels' => array(
                'name' => __( 'Movies' ),
                'singular_name' => __( 'Movie' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'movies'),
            'show_in_rest' => true,
 
        )
    );
}
// Richiama la funzione durante l'inizializzazione
add_action( 'init', 'create_posttype' );

Ciò che fa questo codice è registrare un custom post type chiamato “Movies” e gli passa un array di argomenti. Questi argomenti sono le opzioni del nostro tipo di post personalizzato.

Questo array ha due parti, la prima parte riguarda le “etichette”, mentre la seconda parte contiene altri argomenti come la visibilità pubblica, se ha un archivio, lo slug. La chiave show_in_rest abilita il supporto dell’editor di blocchi.

Ora diamo un’occhiata a un pezzo di codice dettagliato che aggiunge più opzioni al tuo tipo di post personalizzato.

/*
* Funzione per creare un CPT
*/
 
function custom_post_type() {
 
// Definisco le etichette del Custom Post Type
    $labels = array(
        'name'                => _x( 'Movies', 'Post Type General Name', 'twentytwenty' ),
        'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentytwenty' ),
        'menu_name'           => __( 'Movies', 'twentytwenty' ),
        'parent_item_colon'   => __( 'Parent Movie', 'twentytwenty' ),
        'all_items'           => __( 'All Movies', 'twentytwenty' ),
        'view_item'           => __( 'View Movie', 'twentytwenty' ),
        'add_new_item'        => __( 'Add New Movie', 'twentytwenty' ),
        'add_new'             => __( 'Add New', 'twentytwenty' ),
        'edit_item'           => __( 'Edit Movie', 'twentytwenty' ),
        'update_item'         => __( 'Update Movie', 'twentytwenty' ),
        'search_items'        => __( 'Search Movie', 'twentytwenty' ),
        'not_found'           => __( 'Not Found', 'twentytwenty' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwenty' ),
    );
     
// Opzioni del Custom Post Type
     
    $args = array(
        'label'               => __( 'movies', 'twentytwenty' ),
        'description'         => __( 'Movie news and reviews', 'twentytwenty' ),
        'labels'              => $labels,
        // le features che supporta il CPT
        'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
        // Associare il CPT ad una tassonomia 
        'taxonomies'          => array( 'genres' ), 
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'post',
        'show_in_rest' => true,
 
    );
     
    // Registro il Custom Post Type
    register_post_type( 'movies', $args );
 
} 
add_action( 'init', 'custom_post_type', 0 );

Come puoi vedere, ho aggiunto molte più opzioni al tipo di post personalizzato con questo codice. Verranno aggiunte funzionalità come il supporto per le revisioni, l’immagine in evidenza, i campi personalizzati e altro.

Abbiamo anche associato questo tipo di post personalizzato a una custom taxonomy(tassonomia personalizzata) chiamata “genres”.

Potresti anche notare la parte in cui abbiamo impostato il valore gerarchico come falso. Se desideri che il tuo custom post type si comporti come se fosse una pagina, puoi impostare questo valore su true. Avrai così la possibilità di creare dei “figli” per le pagine principali.

Un’altra cosa da notare è l’uso ripetuto della stringa ‘twentytwenty’ , ovvero il text_domain del tema in uso. Se il tuo tema è pronto per la traduzione e desideri che le voci dei tuoi custom post type vengano tradotte, dovrai menzionare il text_domain utilizzato dal tuo tema.

Puoi trovare il dominio di testo del tuo tema all’interno del file style.css nella directory del tuo tema. Il text_domain sarà menzionato nell’intestazione del file.

Visualizzare i custom post type sul tuo sito

WordPress è dotato di supporto integrato per la visualizzazione dei tuoi CPT. Dopo aver aggiunto alcuni elementi al tuo nuovo custom post type, è il momento di visualizzarli sul tuo sito web.

Ci sono un paio di metodi che puoi usare, ognuno ha i suoi vantaggi.

Visualizzare il custom post type utilizzando il template di archivio predefinito

Innanzitutto, puoi semplicemente andare su Aspetto » Menu e aggiungere un collegamento personalizzato al tuo menu. Questo link personalizzato è il link al tuo custom post type.

Aggiungi il tipo di post al tuo menu di navigazione

Se stai usando permalink SEO friendly, molto probabilmente l’URL del tuo CPT sarà qualcosa del genere:

http://example.com/movies

Se non stai utilizzando permalink SEO friendly, l’URL del tuo CPT sarà simile a questo:

http://example.com/?post_type=movies

Non dimenticare di sostituire example.com con il tuo nome di dominio e movies con il nome del tuo custom post type.

Salva il tuo menu e poi visita il front-end del tuo sito web. Vedrai il nuovo menu che hai aggiunto e quando farai clic su di esso, mostrerà la tua pagina di archivio associata al nuovo custom post type, utilizzando il file template archive.php nel tuo tema.

Utilizzare template personalizzati per gli archivi dei CPT e i suoi post

Se non ti piace l’aspetto della pagina di archivio per il tuo custom post type, puoi utilizzare un modello dedicato creato da te.

Per fare ciò, tutto ciò che devi fare è creare un nuovo file nella directory del tuo tema e chiamarlo archivio-movies.php. Sostituisci movies con il nome del tuo custom post type.

Per iniziare, puoi copiare il contenuto del file archive.php del tuo tema nel template archive-movies.php e quindi iniziare a modificarlo per soddisfare le tue esigenze.

Ora ogni volta che si accede alla pagina di archivio per il tuo custom post type, questo template verrà utilizzato per visualizzarlo.

Allo stesso modo, puoi anche creare un template personalizzato per la visualizzazione dei singoli elementi del tuo post type. Per farlo è necessario creare single-movies.php nella directory del tema. Non dimenticare di sostituire movies con il nome del tuo custom post type.

Puoi iniziare copiando i contenuti del template single.php del tuo tema nel template single-movies.php e quindi iniziare a modificarlo per soddisfare le tue esigenze.

Visualizzare i custom post type in homepage

Un vantaggio dell’utilizzo di custom post type è che mantiene i contenuti dei post personalizzati lontani dai tuoi post regolari. Tuttavia, se desideri che vengano visualizzati nel loop dei tuoi post normali, puoi farlo aggiungendo questo codice nel file functions.php del tuo tema o in un plug-in specifico del sito:

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'movies' ) );
return $query;
}

Non dimenticare di sostituire movies con il tuo custom post type.

Eseguire una query dei custom post type

Se hai familiarità con la codifica e desideri eseguire query di loop nei tuoi template, ecco come farlo.

Interrogando il database, puoi recuperare gli elementi da un custom post type.

<?php 
$args = array( 'post_type' => 'movies', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?> 
</div>
<?php endwhile;
wp_reset_postdata(); ?>
<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

In questo codice, per prima cosa, abbiamo definito il tipo di post e i post per pagina negli argomenti per la nostra nuova classe WP_Query.

Successivamente, abbiamo eseguito la nostra query, recuperato i post e li abbiamo visualizzati all’interno del ciclo.

Visualizzare i custom post type nei widget

Noterai che esiste un widget predefinito in WordPress per visualizzare i post recenti, ma non ti consente di scegliere un custom post type.

E se volessi visualizzare le ultime voci dal tuo tipo di post appena creato in un widget? C’è un modo semplice per farlo.

La prima cosa che devi fare è installare e attivare il plugin Ultimate Posts Widget. Dopo l’attivazione, vai su Aspetto » Widget trascina e rilascia il widget di Ultimate Posts sulla barra laterale che ospita i widget.

Widget degli ultimi post

Questo potente widget ti consentirà di mostrare i post recenti di qualsiasi tipo di post. Puoi anche visualizzare estratti di post con un link per saperne di più o persino mostrare un’immagine in primo piano accanto al titolo del post.

Configura il widget selezionando le opzioni che desideri e selezionando il tuo custom post type. Dopodiché salva le modifiche e guarda il widget in azione sul tuo sito web.

Conclusioni

Se vuoi sbizzarrirti con il codice del tuo sito web e fare delle prove, segui passo passo le indicazioni che ti ho fornito. Copia e incolla gli snippet degli esempi e modificali a tuo piacimento.

Se invece non ti senti confidente con queste modifiche ma stai cercando di ampliare il tuo sito web o blog e vorresti affidarti ad un web designer freelance puoi contattarmi e richiedere un preventivo per la modifica o la realizzazione del tuo sito web. Sarò felice di aiutarti a realizzare il tuo progetto.

A presto con nuovi tutorial!