Come creare Custom Post Type da zero (CPT)
Ciao, in questo articolo cercherò di spiegarti come creare i Custom Post Type (CPT) nel tuo tema personalizzato di WordPress.
Cosa sono i Custom Post Type (CPT) ?
CPT è un tipo di post di WordPress. Per impostazione predefinita, WordPress presenta 2 tipi di post.
I due tipi sono appunto le pagine e articoli, ma quell che alcuni non sanno, è che possiamo aggiungerne tante tipologie di post custom, tante quanto ne abbiamo bisogno.
I tipi di post personalizzati estendono le funzioni di WordPress e ci consentono di aggiungere nuove funzionalità, come per esempio un archivio di post che riguarda solamente il genere dei film, oppure musica, ecc..
Vediamo subito come farlo, in questa guida ti mostrerò come creare dei Post Personalizzati in maniera custom(scrivendo del codice all’interno del tuo tema di WordPress), oppure tramite l’utilizzo di plugin.
Incominciamo con la maniera custom:
Se quello che cerchi è un plugin, allora puoi saltare questa parte andando più giù o cliccando qui
Supponiamo per esempio che volessimo creare un CPT (Custom Post Type) dei servizi che offriamo, e quindi vogliamo che ogni articolo che venga pubblicato, venga automaticamente mostrato nella pagina servizi del nostro sito web.
Per prima cosa, scriviamo il codice necessario per creare il CPT che dovrà essere inserito nel file function.php del tema, oppure possiamo creare un file che nomineremo per facilitare la comprensione services-cpt.php e lo metteremo in una nuova cartella chiamata mycpt la cui destinazione sarà la stessa di dove troviamo i file index.php, function.php footer.php ecc. (quindi nella cartella principale del tema).
Chiaramente se dovessi aver scelto la seconda opzione, dovrai specificare nel file function.php , di aver creato un nuovo file .php e quindi di conseguenza far sapere al nostro WordPress che c’è del codice custom (creato da noi) da leggere.
Ma come faccio a dichiarare il mio Custom Post Type??
Semplicissimo, tramite la funzione include_once che scriveremo appunto nel documento function.php richiameremo il nostro file service-cpt.php.
Quindi andiamo per steps:
- Creiamo la cartella mycpt nella cartella del tema di wordpress
- Creiamo un file chiamato services-cpt.php nella cartella
- Andiamo nel file funcion.php e dichiaramo il file a wordpress scrivendo:
include_once(mycpt/services-cpt.php);
Bene adesso non ci resta che scrivere il codice del nostro CPT nel nostro file services- cpt .php
<?php function custom_post_type_services() { // Questa parte è il label del nostro CUSTOM POST TYPE, quindi tutti i pulsanti di aggiunta modifica e il nome che appare nella nostra dashboard. $labels = array( 'name' =>_x( 'services', 'Post Type General Name', 'Mio Tema' ), 'singular_name' =>_x( 'Service', 'Post Type Singular Name', 'Mio Tema' ), 'menu_name' => __( 'Service', 'Mio Tema' ), 'parent_item_colon' => __( 'Parent Service', 'Mio Tema' ), 'all_items' => __( 'All services', 'Mio Tema' ), 'view_item' => __( 'View Service', 'Mio Tema' ), 'add_new_item' => __( 'Add New Service', 'Mio Tema' ), 'add_new' => __( 'Add New', 'Mio Tema' ), 'edit_item' => __( 'Edit Service', 'Mio Tema' ), 'update_item' => __( 'Update Service', 'Mio Tema' ), 'search_items' => __( 'Search Service', 'Mio Tema' ), 'not_found' => __( 'Not Found', 'Mio Tema' ), 'not_found_in_trash'=> __( 'Not found in Trash', 'Mio Tema' ), ); // QUI INVECE SETTIAMO LE NOSTRE OPZIONI $args = array( 'label' => __( 'services', 'Mio Tema' ), 'description' => __( 'Service news and reviews', 'Mio Tema' ), 'labels' => $labels, // Features per il nostro CPT utilizzando il classico Post Editor 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ), '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' => false, 'exclude_from_search'=&amp;gt; false, 'publicly_queryable'=> true, 'capability_type' => 'post', 'show_in_rest'=&amp;gt; true, 'taxonomies' => array( 'category' ), ); // CON QUESTA STRINGA REGISTRIAMO IL NOSTRO CPT register_post_type( 'services', $args ); } /* CON QUESTA RIGA LO INIZIALIZZIAMO */ add_action( 'init', 'custom_post_type_services' );
Adesso dovresti vedere nella tua dashboard (Pannello di amministrazione WordPress) la voce Service, e da li potrai pubblicare e modificare i tuoi post proprio come fai con le pagine e gli articoli.
Adesso non ci resta che mostrare il nostro Custom Post Type in una pagina. Niente di più facile!
Creiamo un file chiamato service.php e lo inseriamo nella cartella principale del Tema (lo stesso posto di dove abbiamo creato la cartella).
ATTENZIONE : Non inserire il file service.php nella cartella “mycpt” ma semplicemente nella cartella principale del tema dove trovi gli altri file (function.php, index.php ecc..).
Bene, adesso scriviamo del codice all’interno del nostro file service.php per mostrare il nostro Custom Post Type (post che pubblicheremo sotto la voce service) nel nostro sito.
<?php /* Template Name: Service */ ?> <?php get_header(); ?> <?php // Loop service $custom_query_args = array( 'post_type' => 'service', 'posts_per_page' => 1, 'orderby' => 'menu_order', 'order' => 'ASC', ); $custom_query = new WP_Query( $custom_query_args ); ?> <?php if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_post_thumbnail(); ?> <?php the_excerpt();?> </article> <?php endwhile; endif; wp_reset_postdata(); ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Ora per attivare il tutto creiamo una pagina di WordPress, e sulla destra sotto la voce “Genitore Pagina”, se hai seguito tutti i passaggi, ti apparirà la voce “Modello” o “Template” dove potrai selezionare Service.
In questa maniera creiamo un vero e proprio archivio di posts (Services), dove ognuno sarà visualizzabile singolarmente cliccando sul link.
Interessante vero? 😀
Come creare Custom Post Type in maniere facile e veloce con un plugin.
Se stai leggendo questa parte, vuol dire che hai scelto di utilizzare i plugin di WordPress che ti semplificano la vita.
Ottima scelta, in realtà creare Custom Post Type in codice, è una scelta che si prende quando si vuole sviluppare un Tema Personalizzato di WordPress da zero.
Poche chiacchiere!
Passiamo subito alla pratica e creiamo i nostri Custom Post Type in 2 minuti!
Ci sono vari plugin per poter creare i vari Custom Post Type, io solitamente ne utilizzo uno in particolare, perchè lo ritengo il più completo e mi sono sempre trovato bene.
Il plugin si chiama appunto Custom Post Type UI ed è totalmente gratuito con più di 900.000 installazioni da parte degli utenti.
Per prima cosa, cerchiamo il plugin nella sezione “aggiungi nuovo plugin” di WordPress.
Una volta installato basterà cliccare sulla voce CPT UI che si trova sulla sinistra nel pannello di amministrazione ed aggiungere o modificare il Custom Post Type che si desidera
Ci sono tantissime sezioni per personalizzare il tuo Custom Post Type, però in realtà quelle che ti servono per crearlo il più velocemente possibile sono le prime e 3 voci e la sezione impostazioni.
Gli altri campi servono per modificare le voci del tuo menù e di come appare la parte editor di ogni post che andrai a pubblicare ed etichette aggiuntive.
Nelle impostazioni potrai decidere se i tuoi post type sono pubblici, se hanno un archivio, impostare il tuo slug archivio es: www.miosito.it/slug-scelto (l’archivio è quella pagina dove vengono mostrati tutti i tuoi post) e quale etichetta scegliere per il tuo menù nel pannello di amministrazione.
Ci sono anche altre voci, spiegate tutte in italiano, ma quelle più importanti, sono queste che ti ho appena descritto.
Con questo plugin, riuscirai a creare i tuoi CPT in pochi munuti!
Fantastico vero? 😀
- 2.988 views
- 3 Commenti
20 Marzo 2021 /
Grazie per l’articolo! E’ stato molto utile 🙂
20 Marzo 2021 /
Grazie a te! 😉
18 Maggio 2021 /
[…] Questo plugin ti permetterà di inserire campi personalizzati non solo nei prodotti, pagine e articoli, ma anche nei commenti, in categorie, tag e perfino nei custom post type. […]