Come creare Custom Post Type in WordPress

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.