Come creare Custom Post Type in WordPress
Indice
Iniziamo dalla soluzione 😎
function aeroporti_custom_post() { // creo e registro il custom post type register_post_type( 'aeroporto', /* nome del custom post type */ // definisco le varie etichette da mostrare nei menù array('labels' => array( 'name' => 'aeroporti', /* nome, al plurale, dell'etichetta del post type. */ 'singular_name' => 'aeroporto', /* nome, al singolare, dell'etichetta del post type. */ 'all_items' => 'Tutti gli aeroporti', /* testo nei menu che indica tutti i contenuti del post type */ 'add_new' => 'Aggiungi nuovo', /*testo del pulsante Aggiungi. */ 'add_new_item' => 'Aggiungi nuovo aeroporto', /* testo per il pulsante Aggiungi nuovo post type */ 'edit_item' => 'Modifica aeroporto', /* testo modifica */ 'new_item' => 'Nuovo aeroporto', /* testo nuovo oggetto */ 'view_item' => 'Visualizza aeroporto', /* testo per visualizzare */ 'search_items' => 'Cerca aeroporto', /* testo per la ricerca*/ 'not_found' => 'Nessun aeroporto trovato', /* testo se non trova nulla */ 'not_found_in_trash' => 'Nessun aeroporto trovato nel cestino', /* testo se non trova nulla nel cestino */ 'parent_item_colon' => '' ), /* fine dell'array delle etichette del menu */ 'description' => 'Lista aeroporti', /* descrizione del post type */ 'public' => true, /* definisce se il post type sia visibile sia da front-end che da back-end */ 'publicly_queryable' => true, /* definisce se possono essere fatte query da front-end */ 'exclude_from_search' => false, /* esclude (false) il post type dai risultati di ricerca */ 'show_ui' => true, /* definisce se deve essere visualizzata l'interfaccia di default nel pannello di amministrazione */ 'query_var' => true, 'menu_position' => 8, /* definisce l'ordine in cui comparire nel menù di amministrazione a sinistra */ 'menu_icon' => get_stylesheet_directory_uri() . '/img/mia-icona.png', /* imposta l'icona da usare nel menù per il posty type */ 'rewrite' => array( 'slug' => 'aeroporti', 'with_front' => false ), /* specificare uno slug per leURL */ 'has_archive' => true, /* definisci se abilitare la generazione di un archivio (tipo archive-aeroporto.php) */ 'capability_type' => 'post', /* definisci se si comporterà come un post o come una pagina */ 'hierarchical' => false, /* definisci se potranno essere definiti elementi padri di altri */ /* la riga successiva definisce quali elementi verranno visualizzati nella schermata di creazione del post */ 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'sticky') ) /* fine delle opzioni */ ); /* fine della registrazione */ } // Inizializzo la funzione add_action( 'init', 'aeroporti_custom_post');
Cosa sono i Custom Post Type (CPT) ?
i custom post type o meglio definiti CPT sono dei tipi di post, vengono storicizzati nella classica tabella wp_posts; di default WORDPRESS ne ha 2 le pagine e gli articoli, ma grazie alla funzione sopra elencata ne possiamo aggiungere a nostro piacimento a seconda del progetto da realizzare.
Dove va inserito il codice sopra riportato, che serve alla creazione di un Custom Post Type in WordPress ?
Il codice inserito nel file functions.php del nostro template, o io consiglio sempre di creare un plugin per WordPress e includere il nostro script al suo interno per separare la logica dal tema.
Come aggiungere le categorie ad un CPT (Custom Post Type) WordPress
Di default i custom post type non hanno il supporto per la categorizzazione, nel caso in cui volessimo aggiungerlo possiamo farlo in questo modo:
add_action( 'init', 'category_aeroporto' ); function category_aeroporto() { register_taxonomy_for_object_type( 'category', 'aeroporto' ); }
e ora per mostrarli ai nostri utenti ?
Bene, abbiamo creato la parte relativa al back end, una volta che abbiamo inserito i nostri aeroporti, possiamo passare al front end in modo da mostrare i post inseriti.
Adesso all’interno del nostro tema creiamo un file che chiamiamo aeroporto.php (il nome del file deve essere quello del custom post type) e ci incolliamo il codice sottostante.
Come mostrare i post di un custom post type di WordPress
<?php /* Template Name: aeroporto */ ?> <?php get_header(); ?> <?php // Loop aeroporti $custom_query_args = array( 'post_type' => 'aeroporto', '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(); ?>
Se pensate di non riuscire a realizzare queste modifiche o avete bisogno di fare altre personalizzazioni potete contattarmi per una consulenza, se la mole di lavoro è tanta possiamo concordare insieme una formula per un Contratto di assistenza e manutenzione sito web, per il periodo necessario a soddisfare tutte le vostre richieste.