Dalla versione 2.9, WordPress ha introdotto la possibilità di utilizzare tipi di post personalizzati. Ora con la versione 3.0, le cose vengono portate un po' più avanti con l'opzione di creare pannelli per i tuoi tipi di post personalizzati. In questo tutorial, ti mostreremo come implementare i tipi di post personalizzati nel tuo sito nel tuo sito WordPress.
Creazione di tipi di post personalizzati – Utilizzo di plugin
Dalla versione 3.0, WordPress non dispone di un'interfaccia utente (UI) integrata per creare tipi di post personalizzati. Ci sono solo due opzioni che possiamo usare per creare tipi di post personalizzati: plugin o codificarli nel file functions.php del tuo tema. Innanzitutto, diamo un'occhiata a come possiamo usare i plugin per creare tipi di post personalizzati.
Custom Post Type UI

Custom Post Type UI è un plugin sviluppato da Brad Williams di WebDevStudios che ti consente di creare facilmente tipi di post e tassonomie personalizzate. Una delle caratteristiche più interessanti di questo plugin è che genera un codice per creare tipi di post personalizzati, in modo da poterlo incollare nel file functions.php del tuo tema. Una delle stranezze di questo plugin è l'impossibilità di condividere le tassonomie tra tutti i tuoi post_type.

Dal pannello Custom Post Type UI fai clic su "Aggiungi nuovo".

Successivamente ti vengono presentate alcune opzioni da compilare. Il "Nome del tipo di post" è ciò che WordPress utilizzerà per interrogare tutti i post di quel post_type. L'"Etichetta" è ciò che verrà visualizzato nella barra laterale della tua Bacheca, proprio come il normale menu "Post". Se espandi "Visualizza opzioni avanzate" vedrai alcune opzioni in più che puoi configurare. La maggior parte sono autoesplicative, come "Pubblico" e "Mostra UI". La prima, se impostata su true, consente la visualizzazione del menu del tipo di post personalizzato nella barra laterale, mentre l'altra (mostra UI), se impostata su true, genera il pannello del menu.
"Rewrite" è ciò che consente al tipo di post personalizzato di utilizzare URL WordPress SEO Friendly (Permalink). Il "Slug di riscrittura personalizzato" può essere impostato su qualsiasi cosa tu desideri. WordPress utilizzerà questo slug per generare i permalink. Quindi, se abbiamo example.com con uno slug di riscrittura personalizzato "movies", il permalink del tuo tipo di post personalizzato apparirà come example.com/movies
La funzione "Query Var" di WordPress ti consente di interrogare i post del tuo tipo di post personalizzato. Quindi, se usassimo l'esempio fornito in precedenza, per accedere a un post con il titolo, Il mio primo post di film, scritto sotto il tipo di post Film, possiamo inserire example.com/?movies=my-first-movie-post. Quindi la variabile di query appare così: ?posttypename
Infine, puoi scegliere le diverse funzionalità supportate dal tuo tipo di post personalizzato, come miniature/immagine in evidenza ed estratti.

Creazione di tipi di post personalizzati – Utilizzo del file Functions.php

Se preferisci utilizzare tipi di post personalizzati senza un plugin, aggiungi semplicemente il seguente codice al file functions.php del tuo tema:
// Creates Movies post type
register_post_type('movies', array(
'label' => 'Movies',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'movies'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',)
) );
Analizziamo il codice.
register_post_type( $post_type, $args ): Questa funzione accetta due parametri, $post_type o il nome del tipo di post, e $args, un array di argomenti.
etichetta: Nome plurale dato al tipo di post che viene visualizzato nella barra laterale del pannello di amministrazione.
pubblico: vero/falso. Consente all'interfaccia utente di amministrazione di essere popolata con post di questo tipo.
mostra_ui: vero/falso. Mostra o nasconde un'interfaccia utente predefinita per gestire questo tipo di post.
tipo_capacita: Predefinito: post Tipo di post da utilizzare per il controllo delle autorizzazioni di lettura, modifica ed eliminazione.
gerarchico: Se il tipo di post è gerarchico.
riscrittura: vero/falso. Predefinito: vero Se viene inserito l'argomento slug, il nome dello slug viene anteposto ai post.
variabile_query: vero/falso Imposta il nome del tipo di post come variabile di query.
supporta: Predefinito: titolo e autore Imposta diverse funzionalità di supporto che il tipo di post consente.
Visita il Codex di WordPress per maggiori informazioni su register_post_type().
Visualizzazione di post di tipo personalizzato
Per visualizzare i post dal tuo tipo di post personalizzato, aggiungi i seguenti codici nel loop. Sostituisci “name” con il nome del tuo tipo di post. Nota: non devi aggiungere i tipi di post personalizzati nel tuo file index.php. Puoi creare una pagina WordPress personalizzata ed eseguire la seguente query all'interno di il Loop.
$query = new WP_Query( 'post_type=name' );
Per visualizzare post da più di un tipo di post, modifica il codice sopra nel seguente modo. Cambia movies con il nome del tuo tipo di post personalizzato.
$query = new WP_Query( array( 'post_type' => array( 'post', 'movies' ) ) );
Il codice sopra visualizzerà tutti i post dal tipo di post regolare (post) e dal tipo di post personalizzato, movies.
Questo è tutto. Speriamo che questo tutorial ti sia stato utile e non dimenticare di porre qualsiasi domanda nei commenti.

Gaby Izarra
Ok, ho un piccolo problema e potresti essere in grado di aiutarmi... ecco la mia pagina del forum di Wordpress. Sto cercando di adattare un elenco di eventi da un tema diverso a quello che sto usando.
http://wordpress.org/support/topic/php-query-for-custom-post-type-not-displaying-creating-theme-event-list?replies=1#post-5587886
dave
Ho creato due tipi di post personalizzati ma solo il primo viene visualizzato sulla mia pagina. ho aggiunto questo
$query = new WP_Query( array( ‘post_type’ => array( ‘post’, ‘featured’, ‘latest’ )
) );
all'interno del mio file di loop ma niente. come posso risolvere questo problema?
Jeroen
Sai come posso aggiungere tipi di post personalizzati alla pagina di archivio del blog e al feed RSS?
Supporto WPBeginner
Sì, abbiamo guide su entrambi gli argomenti. Dai un'occhiata a come creare una pagina di archivio per tipi di post personalizzati in WordPress, e come aggiungere tipi di post personalizzati al tuo feed RSS principale di WordPress.
Amministratore
wizdom networks
Innanzitutto, ottimo articolo! Sto lavorando all'implementazione di tipi di post personalizzati tramite codice. Da notare che la documentazione attuale di WordPress (http://codex.wordpress.org/Function_Reference/query_posts) specifica che la funzione query_posts generalmente non dovrebbe essere utilizzata e che il hook pre_get_posts viene utilizzato per modificare le query.
"Si raccomanda vivamente di utilizzare invece il filtro pre_get_posts e di modificare la query principale controllando is_main_query"
Ancora, ottimo articolo, grazie per averlo condiviso.
Saluti.
Supporto WPBeginner
Grazie Wisdom, abbiamo aggiornato l'articolo con WP_Query
Amministratore
Thom Abbott
WOW... per un principiante che usa WP per gestire il proprio sito web, questo non è affatto materiale per principianti! Probabilmente dovrò rivolgermi a uno sviluppatore WP per impostare la mia pagina personalizzata che desidero.
Staff editoriale
I tipi di post personalizzati sono stati creati per gli sviluppatori per estendere la funzionalità di WordPress. Non sono mai stati pensati per i principianti.
Amministratore
mark shirley
query_posts( ‘post_type=movies’);
?>
Non riesco a farlo funzionare nel template di pagina del mio tema child twentyeleven, dove dovrei metterlo per recuperare una pagina di film. In realtà sono gli estratti che voglio davvero. Grazie Mark
muntzdesigns
Quando si utilizza questo plugin e si aggiunge il codice sopra a loop.php, si perde il controllo sulle categorie... il mio custom post type viene aggiunto a tutte le categorie... qualche aiuto?
wpbeginner
@muntzdesigns È per questo che hai più loop... il tuo loop principale del blog, archive.php, category.php ecc... Su un sito progettato su misura, dovrai utilizzarlo per farlo funzionare correttamente.
muntzdesigns
@wpbeginner@muntzdesigns Quindi devo solo aggiungere il codice sopra a tutti i file? (loop.php, archive.php e category.php). Grazie.
wpbeginner
@muntzdesigns No. Aggiungi il codice solo nelle pagine principali. Il problema che avevi era che i custom post type venivano aggiunti a tutte le categorie... Devi aggiungere il codice sopra solo al loop principale. Quindi crea un nuovo loop per l'archivio delle categorie, l'archivio delle tassonomie, l'archivio degli autori...
PriyaVerma
Bel articolo, grazie mille
dazuaga
No, mi sbagliavo.
dazuaga
Lascia perdere: %category%/%type%/%postname% Penso che funzionerà
dazuaga
Cosa fa esattamente Content Type Identifier nel plugin CMS Press? Sto cercando un modo per anteporre lo slug della categoria al custom post type (esempio.com/category/post_type/postname) ma quando uso %category%/%identifier%/%postname% in Content Type Identifier si trasforma automaticamente in questo modo: %categoryidentifierpostname
murphymakes
ottime informazioni come al solito. grazie
whimba
I like Custom Post Type UI. It’s light and easy to use but is limited in functionality. So I created my own – http://wordpress.org/extend/plugins/mp-former/. You can try it
simplywendz
Questo è un ottimo tutorial per creare un post personalizzato in WordPress. I passaggi sono forniti in dettaglio e sono facili da seguire. Questo è un grande, grande aiuto!
hoss9009
Me lo stavo chiedendo anch'io!!
Portatore di calice
Wow, avevo fatto funzionare tutta la cosa di CMS Press, ma non riuscivo a capire come farla apparire nei post. Immagino che esista da così tanto tempo che tutti danno per scontato che sia già noto. Risposta perfetta per far apparire il mio tipo di post personalizzato nel Loop.
Jerry Craig
Coppiere
Noel Boaz
Grazie, questo mi ha aiutato molto a far apparire il mio tipo di post personalizzato nella home page. Sicuramente salvato nei preferiti, grazie.
Ed
Ho provato il plugin, molto impressionante. Tuttavia, sto cercando di far apparire un attributo di pagina dagli attributi 'Pagine' del mio tema, ovvero la possibilità di utilizzare un'opzione di pagina a larghezza intera. Devo presumere che il tuo plugin estragga attributi solo dai layout di tipo Post piuttosto che dai layout di tipo Pagina? Tutto quello che voglio è avere l'opzione di impostare un post su un modello completo e predeterminato.
Ottimo lavoro comunque, lo userò molto.
Salute
Ed
Simon
Ho provato il metodo del plugin ma non sono riuscito a far apparire il post. Forse perché non sono riuscito a trovare il file loop.php.
Comunque, grazie mille, sono abbastanza sicuro che funzionerà presto.
Voglio dire che una cosa super fantastica che sarebbe fantastico fare con WordPress è avere la possibilità di creare viste personalizzate dei contenuti proprio come in Drupal con il modulo views.
So che esiste un plugin chiamato pods e pods cms che dovrebbe rendere possibile ciò. Forse potresti chiedere allo sviluppatore di aiutare in un post su wpbeginner se non lo capisci affatto come me. Sono sicuro che a molte persone piacerebbe. Presentare le viste è ciò che rende veramente un CMS un CMS veramente dinamico, dopotutto.
Staff editoriale
Il loop.php potrebbe non esistere nel tuo tema. Il loop si trova anche nel tuo index.php, archive.php, category.php ecc. Puoi anche creare un loop personalizzato se vuoi.
Amministratore
Peter
Buon tutorial, grazie per aver condiviso.
Ho una domanda su questo.
Ho creato un tipo di post personalizzato tramite functions.php (un calendario) che ha una meta box personalizzata nell'interfaccia utente di amministrazione. Questa meta box utilizza jQuery su un campo.(http://jqueryui.com/demos/datepicker/).
Affinché questo datepicker funzioni, devo incorporare gli script necessari.
add_action(‘admin_enqueue_scripts’,’enqueue_my_scripts’);
funziona ma i miei script vengono caricati su tutta l'interfaccia utente di amministrazione. (il che interferisce con il jQuery predefinito di WP admin)
Quindi quello di cui ho bisogno è l'hook per il mio tipo di post personalizzato.
questo:
add_action(‘register_post_type’,’enqueue_my_scripts’);
non funziona perché register_post_type non è un hook.
Quindi, qual è l'hook per un post_type personalizzato?
Amanda
Potresti provare ad aggiungere quanto segue alla definizione della tua funzione prima di registrare lo script:
if(is_admin()) return;Quindi qualcosa del tipo:
function some-function(){
// non ci serve nelle pagine di amministrazione, quindi...
if(is_admin()) return;
// registra lo script personalizzato
wp_enqueue_script( 'some-script' );
}
Evan
Come faccio a far apparire ogni tipo di contenuto nel loop? Voglio dire, è quasi come Tumblr. Se posto un'immagine... devo personalizzare il codice nel loop - la stessa cosa se posto un link.
Staff editoriale
Come puoi vedere nel post, c'è un'opzione per mostrare sia tipi di post personalizzati che post all'interno di un unico loop...
Amministratore
Michael
Non riesco a far funzionare il loop per interrogare i post del mio tipo personalizzato. Il tuo esempio sembra abbastanza semplice, quindi ho provato quanto segue: $var = query_posts( ‘post_type=sponsor’);
Poi ho iniziato un ciclo
while ($var ->have_posts()) : $var ->the_post();
Fai cose
endwhile;
questo restituisce un errore php:
Fatal error: Call to a member function have_posts() on a non-object in single-sponsor.php on line 22
la riga 22 è la riga con il loop while.
Idee? Cosa sto sbagliando?
Romero
Ho provato a creare un tag per un campo personalizzato e quando uso get_the_tags all'interno del ciclo di un tipo personalizzato, non stampa nulla.
Qualche suggerimento?
Gen
Sono molto entusiasta di questa nuova funzionalità ^-^ Hai fatto un bel video. Anche se nel tuo esempio, perché usare tipi di post personalizzati e non creare semplicemente una categoria libri e film per i post? In questo modo risparmi tutta la fatica di un tipo di post personalizzato.
Staff editoriale
Primo, ti permette di organizzare le cose in modo diverso. Secondo, puoi avere un pannello di scrittura completamente diverso con opzioni diverse. Permette molte più personalizzazioni...
Amministratore
Sandra
Grazie per questo ottimo articolo! Sono un vero principiante di wp e forse puoi aiutarmi con questa domanda:
È possibile visualizzare gli archivi di un tipo di post personalizzato nella barra laterale come si può fare usando il plugin "display archives by cat" di kwebble?
Staff editoriale
Sì, è possibile visualizzare i tipi di post personalizzati come archivi. Crea semplicemente un loop personalizzato nella barra laterale per visualizzare post o categorie da un tipo di post specifico.
Amministratore
lukeMV
Ci sono guide facili da capire su come aggiungere opzioni ai post personalizzati? Ad esempio, se un film è drammatico, commedia, horror... per avere quelle opzioni come caselle di controllo ALL'INTERNO del pannello di modifica del post personalizzato? Non riesco a trovare una guida o un plugin per questo.
Paul
Ciao, è stato un ottimo articolo. Speravo che tu potessi conoscere la risposta alla mia domanda.
Nelle ultime due righe hai:
questo restituisce tutti i post e i tipi di post chiamati movies.
Sai come restituire entrambi i tipi di post chiamati 'movies' e i post nella categoria 'movies' ma escludere tutti gli altri post che non hanno questa categoria??
Staff editoriale
Useresti i parametri di categoria per query_posts – http://codex.wordpress.org/Function_Reference/query_posts
Amministratore
Walter
Puoi fare un passo indietro: perché ho bisogno dei tipi di post personalizzati in primo luogo? Qual è il caso d'uso?
Staff editoriale
I tipi di post personalizzati sono utili per gli utenti che utilizzano WordPress per qualcosa di più di un blog, ad esempio un CMS. Diciamo che vuoi avere un sito che includa il tuo portfolio e il tuo blog. Ovviamente non vuoi che il tuo blog abbia lo stesso aspetto del tuo portfolio. È qui che i tipi di post personalizzati tornano utili. Questa è una funzionalità molto versatile per portare WordPress al livello successivo. Per l'utente medio di blog, probabilmente non ha bisogno di tipi di post personalizzati.
Amministratore
Tracy B.
Ok, ma sto ancora cercando di capire la differenza tra questo e la semplice categorizzazione delle cose. Ho realizzato molti siti per persone in cui pagine separate fanno cose come elencare solo la categoria "eventi correnti" e un'altra la categoria "progetti" o altro. In che modo questo è migliore?
Staff editoriale
Questo è migliore in termini di organizzazione. Puoi avere tassonomie personalizzate, pannelli di scrittura, ecc. per un tipo di post specifico.
Chris
Non posso fare a meno di pensare che questo sarebbe stato più utile se avessi mostrato qualcosa di insolito con i tipi di post, piuttosto che usare il vecchio "film e libri".
Che ne dici di un sideblog che utilizza tipi di post, o qualcosa di un po' più pratico? Tutto questo fa solo ripetere ciò che il WP Codex avrà alla fine, se non è già lì.
Staff editoriale
Ci dispiace che tu la pensi così Chris. WP Codex non avrà un video che ti mostrerà come fare questo. Non importa quali nomi usiamo per i tipi di post personalizzati, l'idea è come aggiungerli. Non creeremo un sito straordinario solo per scrivere un post sui tipi di post personalizzati. Se cerchi quella conoscenza, probabilmente è meglio che lo faccia da solo. Questo blog deve ancora soddisfare le esigenze degli utenti di livello principiante, motivo per cui abbiamo condiviso il metodo del plugin.
Amministratore
Kevin Elliott
Funzionerà su WordPress 2.9 o è solo per il 3.0?
Ho provato a usare la versione 3.0, ma è successo un inconveniente per cui nessuno dei miei plugin si attivava, nemmeno quelli che dicevano di essersi attivati. Era molto strano!
-Kevin
Staff editoriale
Questo funzionerebbe con la versione 3.0, quindi usalo solo sulla 3.0. Prova a reinstallare WordPress 3.0, stiamo gestendo alcuni siti con esso.
Amministratore
Marc
Ho appena visto il video…
È vero che dobbiamo modificare i file php (= codifica manuale) per far funzionare tutto?
Staff editoriale
No, devi fare una cosa o l'altra. Nel nostro video, abbiamo mostrato entrambi i modi. Puoi fare il modo della codifica manuale o il modo del plugin.
Amministratore
Marc
Allright, I see, thnx!
Allora suppongo che tu abbia iniziato con il modo della codifica manuale? All'epoca, vedendo solo tutta la roba di codifica, ho semplicemente rinunciato. Pertanto, immagino di non aver visto il modo del plugin…
Rilwis
Articolo molto bello. Il plugin Custom Post Type UI ha opzioni molto simili al codice PHP grezzo per la registrazione dei tipi di post, il che è ottimo per gli sviluppatori.
Grazie per aver introdotto molti plugin utili per lavorare con i tipi di post personalizzati.
Kaye Media
Ottimo articolo, non vedo l'ora di Wp3 =)
Bryan
Sono felice che Wordpress abbia integrato i tipi di post personalizzati direttamente nel framework di wp. Tuttavia, non vedo come sia meglio che usare plugin già disponibili come Magic Fields o Flutter. Con quei plugin ottieni lo stesso effetto più campi personalizzati facili da configurare con molti tipi diversi e flessibilità su come inserire e visualizzare i tuoi dati. wp 3.0 supporta qualcosa del genere subito?
Staff editoriale
Puoi creare un'interfaccia utente per campi personalizzati e quasi tutto nel backend con i tipi di post personalizzati. Hai ragione sul fatto che quei plugin lo rendono molto facile per gli utenti, ma se uno di quei plugin cade nello sviluppo, allora non hai altra scelta.
Amministratore
Bryan
Giusto. Ho giocato un po' con la beta, ma non quanto dovrei suppongo. Sarebbe emozionante se andasse più in quella direzione. Da quando sono diventato esperto nell'uso di quei plugin, quasi non faccio più un sito senza uno
Quindi sarebbe fantastico se tutti quegli strumenti fossero disponibili e gestiti all'interno dell'applicazione originale. Posso vedere che porterebbe a una migliore gestione del backend e incoraggerebbe più persone a contribuire piuttosto che a un gruppo più ristretto che supporta un plugin particolare.
Ian
Penso che abbiano intenzionalmente lasciato parte del codice dei tipi di post personalizzati come codice. Per permettere all'utente medio di doverci fare i conti.
Abdul Wahid
Questo è un articolo fantastico
ravalde
Non riesco a far visualizzare alcuna tassonomia in twentyeleven, né riesco a trovare un tutorial che me lo mostri dall'inizio alla fine, sembrano tutti concentrarsi su twentyten e sul loop