Tutorial WordPress affidabili, quando ne hai più bisogno.
Guida per principianti a WordPress
WPB Cup
25 Milioni+
Siti web che utilizzano i nostri plugin
16+
Anni di esperienza con WordPress
3000+
Tutorial WordPress di esperti

Come usare i tipi di post personalizzati in WordPress 3.0

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

Interfaccia Utente Custom Post Types

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.

Genera codice per Custom Post Types

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

Pulsante Aggiungi Nuovo per Interfaccia Utente Custom Post Type

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.

Opzioni Interfaccia Utente Custom Post Types

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

Codifica manuale Custom Post Types

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.

Dichiarazione: Il nostro contenuto è supportato dai lettori. Ciò significa che se fai clic su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come è finanziato WPBeginner, perché è importante e come puoi supportarci. Ecco il nostro processo editoriale.

Il Toolkit WordPress Definitivo

Ottieni l'accesso GRATUITO al nostro toolkit - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Interazioni del lettore

58 CommentsLeave a Reply

  1. 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?

  2. 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.

  3. 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.

  4. 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

  5. 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?

    • @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.

      • @wpbeginner@muntzdesigns Quindi devo solo aggiungere il codice sopra a tutti i file? (loop.php, archive.php e category.php). Grazie.

        • @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...

  6. 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

  7. 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!

  8. 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

  9. Grazie, questo mi ha aiutato molto a far apparire il mio tipo di post personalizzato nella home page. Sicuramente salvato nei preferiti, grazie.

  10. 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

  11. 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.

  12. 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?

    • 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' );
      }

  13. 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.

  14. 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?

  15. 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?

  16. 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.

    • 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

  17. 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?

    • 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

  18. 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.

  19. Ciao, è stato un ottimo articolo. Speravo che tu potessi conoscere la risposta alla mia domanda.
    Nelle ultime due righe hai:

    query_posts(array('post_type' => array('post', 'movies')));

    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??

    • 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

      • 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?

  20. 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ì.

    • 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

  21. 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

  22. Ho appena visto il video…

    È vero che dobbiamo modificare i file php (= codifica manuale) per far funzionare tutto?

      • 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…

  23. 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.

  24. 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?

    • 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

      • 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.

        • 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.

    • 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

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra politica sui commenti, e il tuo indirizzo email NON verrà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.