wordpress-custom-post-types

Spesso le persone classificano erroneamente WordPress come una semplice piattaforma di blog. Negli ultimi anni, WordPress si è evoluto in un solido sistema di gestione dei contenuti. Per impostazione predefinita, WordPress include post e pagine come principali tipi di contenuto. Tuttavia, puoi creare tutti i tipi di contenuti personalizzati che desideri e questi tipi di contenuti personalizzati vengono definiti Custom Post Types. In questa guida WordPress Custom Post Types ti mostreremo come creare tipi di post personalizzati.

Che cos’è il Custom Post Types in WordPress?

I Custom Post Types 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. Tuttavia, un tipo di post può essere qualsiasi tipo di contenuto. Per impostazione predefinita, WordPress viene fornito con questi tipi di post:

  • Post (Articoli
  • Page (Pagine)
  • Attachment (Allegati)
  • Revision (Revisione)
  • Nav Menu (Menu di navigazione)

Puoi creare i tuoi tipi di post personalizzati e chiamarli come preferisci. Ad esempio, se gestisci un sito Web di recensioni di film, probabilmente vorrai creare un tipo di post di recensioni di film. Questo tipo di post può avere diversi campi personalizzati e persino una propria struttura di categorie personalizzata. Altri esempi di tipi di post sono: portfolio, testimonianze, prodotti, ecc.

Come creare Custom Post Types in WordPress senza codifica

Il modo più semplice per creare un tipo di post personalizzato in WordPress è utilizzare un plug-in. Questo metodo è consigliato per i principianti perché è sicuro e facile.

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

Ora vai all’interfaccia UI CPT »Aggiungi nuovo (Add New) per creare un nuovo tipo di post personalizzato.

creare-wordpress-custom-post-types-con-plugin

Il plug-in consente inoltre di creare tassonomie personalizzate .

Ecco perché la pagina Aggiungi nuovo tipo di post personalizzato (create new custom post type o taxonomy) è divisa in due colonne. Alla tua sinistra, hai il modulo che devi compilare per creare il tuo tipo di post personalizzato. Alla tua destra, hai un modulo per creare una tassonomia personalizzata se ne hai bisogno.

Nella colonna Tipo di post personalizzato, devi innanzitutto fornire un nome per il tuo tipo di post personalizzato. Questo nome non può superare i 20 caratteri, ad esempio film, ricette, offerte, glossario, ecc.

creare-custom-post-type-in-wordpress

Nel campo successivo, devi fornire un’etichetta (label) per il tuo tipo di post personalizzato. Questa etichetta verrà visualizzata nella barra di amministrazione di WordPress proprio come post e pagine. Deve anche essere plurale per avere un senso. ad es. film, ricette, offerte, glossario, ecc.

Successivamente è necessario fornire un modulo al singolare per l’etichetta. Questo singolare dell’etichetta verrà utilizzato da WordPress per mostrare istruzioni e altri elementi nell’interfaccia utente.

Infine, inserisci una descrizione per il tuo tipo di post personalizzato. Questa descrizione viene semplicemente utilizzata per descrivere ciò che fa il tuo tipo di post.

Ora puoi fare clic sul pulsante “Crea tipo di post personalizzato” per aggiungere il tuo nuovo tipo di post personalizzato. È tutto.

Puoi anche fare clic sui collegamenti Opzioni etichette avanzate e Opzioni avanzate per personalizzare più opzioni per il tuo tipo di post personalizzato.

Come creare Custom Post Types in WordPress con codifica (avanzato)

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

Se si sta lavorando su un sito del cliente e non si desidera installare un altro plugin, è possibile creare manualmente un wordpress custom type post aggiungendo il codice richiesto nel file functions.php del tuo tema o in un Plugin Site-Specific

Per prima cosa ti mostreremo un esempio rapido e perfettamente funzionante in modo da capire come funziona. Dai un’occhiata a questo codice:

// Our custom post type function
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'),
        )
    );
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );

Ciò che questo codice fa è che registra un tipo di post 'movies'con una matrice (array) di argomenti. Questi argomenti sono le opzioni del nostro tipo di post personalizzato WordPress. Questa matrice ha due parti, la prima parte sono etichette (label), che a sua volta è una matrice (array). La seconda parte contiene altri argomenti come la visibilità pubblica, ha l’archivio e lo slug che verranno utilizzati negli URL per questo tipo di post.

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

/*
* Creating a function to create our CPT
*/
 
function custom_post_type() {
 
// Set UI labels for Custom Post Type
    $labels = array(
        'name'                => _x( 'Movies', 'Post Type General Name', 'twentythirteen' ),
        'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentythirteen' ),
        'menu_name'           => __( 'Movies', 'twentythirteen' ),
        'parent_item_colon'   => __( 'Parent Movie', 'twentythirteen' ),
        'all_items'           => __( 'All Movies', 'twentythirteen' ),
        'view_item'           => __( 'View Movie', 'twentythirteen' ),
        'add_new_item'        => __( 'Add New Movie', 'twentythirteen' ),
        'add_new'             => __( 'Add New', 'twentythirteen' ),
        'edit_item'           => __( 'Edit Movie', 'twentythirteen' ),
        'update_item'         => __( 'Update Movie', 'twentythirteen' ),
        'search_items'        => __( 'Search Movie', 'twentythirteen' ),
        'not_found'           => __( 'Not Found', 'twentythirteen' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'twentythirteen' ),
    );
     
// Set other options for Custom Post Type
     
    $args = array(
        'label'               => __( 'movies', 'twentythirteen' ),
        'description'         => __( 'Movie news and reviews', 'twentythirteen' ),
        'labels'              => $labels,
        // Features this CPT supports in Post Editor
        'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
        // You can associate this CPT with a taxonomy or custom taxonomy. 
        'taxonomies'          => array( 'genres' ),
        /* A hierarchical CPT is like Pages and can have
        * Parent and child items. A non-hierarchical CPT
        * is like Posts.
        */ 
        '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'     => 'page',
    );
     
    // Registering your Custom Post Type
    register_post_type( 'movies', $args );
 
}
 
/* Hook into the 'init' action so that the function
* Containing our post type registration is not 
* unnecessarily executed. 
*/
 
add_action( 'init', 'custom_post_type', 0 );

Come puoi vedere, abbiamo aggiunto molte altre opzioni al tipo di post personalizzato con il suo codice. Aggiungerà più funzionalità come il supporto per le revisioni, l’immagine in primo piano, i campi personalizzati, ecc.

Abbiamo anche associato questo tipo di post personalizzato a una tassonomia personalizzata chiamata genres. Si noti inoltre la parte in cui è stato impostato il valore gerarchico su false (hierarchical): se desideri che il tuo tipo di post personalizzato si comporti come Pages, puoi impostare questo valore su true.

Si noti inoltre un uso ripetuto di twentythirteen, questo è chiamato dominio di testo (text domain). Se il tuo tema ha la traduzione automatica della lingua e desideri che i tipi di post personalizzati vengano tradotti, dovrai menzionare il dominio di testo utilizzato dal tema. È possibile trovare il dominio di testo del tema all’interno del file style.cssnella directory del tema. Il dominio di testo verrà menzionato nell’intestazione del file.

Visualizzare i tipi di post personalizzati sul tuo sito WordPress

WordPress viene fornito con il supporto integrato per la visualizzazione dei tipi di post personalizzati. Dopo aver aggiunto alcuni elementi al nuovo tipo di post personalizzato, è tempo di visualizzarli sul tuo sito Web.

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

Visualizzazione del tipo di post personalizzato utilizzando il template archive predefinito

Per prima cosa puoi semplicemente andare su Aspetto »Menu e aggiungere un link personalizzato al tuo menu. Questo link personalizzato è il link al tuo tipo di post personalizzato. Se stai utilizzando permalink SEO friendly , molto probabilmente l’URL del tuo CPT sarà qualcosa del genere:

http://examplebfast.com/movies

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

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

Sostituisci examplebfast.com con il tuo nome di dominio e movies con il nome del tuo WordPress Custom Post Type. Salvare il menu e quindi visitare il front-end del sito Web. Vedrai il nuovo collegamento sul menu che hai appena aggiunto e quando farai clic su di esso, visualizzerai la tua pagina di archivio del tuo post type custom usando il file template archive.php nel tuo tema.

Utilizzo di template personalizzati per archivi dei WordPress custom post types e singoli post

Se non ti piace l’aspetto della pagina di archivio per il tuo tipo di post personalizzato, puoi utilizzare un modello dedicato per l’archivio del tipo di post personalizzato . Per fare ciò, tutto ciò che devi fare è creare un nuovo file nella directory del tema e nominarlo archive-movies.php. Sostituisci movies con il nome del tuo tipo di post personalizzato.

Per iniziare, puoi copiare il contenuto del file archive.php del tuo tema nel template appena creato 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 tipo di post personalizzato, questo modello verrà utilizzato per visualizzarlo.

Allo stesso modo, puoi anche creare un modello personalizzato per la visualizzazione dei tuoi singoli post personalizzati. Per fare ciò è necessario creare single-movies.phpnella directory dei temi. Non dimenticare di sostituire movies con il nome del tuo tipo di post personalizzato.

Puoi iniziare copiando il contenuto del template single.php del tuo tema in single-movies.php e quindi iniziare a modificarlo per soddisfare le tue esigenze.

Visualizzazione dei WordPress Custom Post Types insieme ai post normali

Uno dei vantaggi dell’utilizzo WordPress Custom Post Types è che mantiene i tuoi tipi di contenuti personalizzati lontano dai tuoi post normali. Tuttavia, se desideri che vengano visualizzati tra i 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 moviescon il tuo tipo di post personalizzato.

Rendere visualizzabili i tipi di post personalizzati WordPress nel motore di ricerca interno

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

Interrogando il database, è possibile recuperare elementi da un tipo di post personalizzato.

<?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 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. Dopodichè abbiamo eseguito la nostra query, recuperato i post e visualizzati nel ciclo.

Visualizzazione dei tipi di post personalizzati nei widget

Noterai che c’è un widget predefinito in WordPress per visualizzare i post recenti. Ma questo widget non ti consente di scegliere un tipo di post personalizzato. Cosa succede se si desidera visualizzare le voci più recenti dal tipo di post appena creato in un widget? C’è un modo semplice per farlo.

La prima cosa che devi fare è installare e attivare il plug-in Ultimate Post Widget . Dopo l’attivazione, vai su Aspetto »Widget e trascina il widget Ultimate Posts su una barra laterale.

Questo potente widget ti permetterà di mostrare post recenti da qualsiasi tipo di post. Puoi anche visualizzare un estratto del 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 desiderate e selezionando il tipo di post personalizzato. Dopodiché salva le modifiche e visualizza il widget in azione sul tuo sito web.

E’ tutto! Speriamo che questo articolo ti abbia aiutato a imparare come creare WordPress Custom Post Types.

Related Posts