Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Coppa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Come creare tipi di post personalizzati in WordPress

I post type personalizzati consentono di andare oltre i post e le pagine standard. Permettono di creare tipi di contenuto diversi, adatti alle esigenze specifiche del sito.

Ad esempio, i post type personalizzati consentono di trasformare il sito WordPress da una semplice piattaforma di blog in un robusto sistema di gestione dei contenuti(CMS).

Ecco perché utilizziamo alcuni post type / tipi di contenuto personalizzati nei nostri siti web. In questa guida vi mostreremo come creare facilmente dei post type / tipi di contenuto personalizzati in WordPress.

How to Create Custom Post Types in WordPress

Che cos’è un tipo di contenuto personalizzato in WordPress?

Sul vostro sito web WordPress, i post type sono utilizzati per distinguere i diversi tipi di contenuto in WordPress. I post e le pagine sono entrambi post type / tipi di contenuto, ma hanno scopi diversi.

Di default, WordPress è dotato di alcuni tipi di contenuto:

  • Pubblica
  • Pagina
  • Allegato
  • Revisione
  • Menu Nav

Detto questo, è possibile creare dei post type personalizzati, noti come custom post type. Questi sono utili per creare contenuti con un formato diverso da quello di una pagina o di un post standard.

Supponiamo che si gestisca un sito web di recensioni di film. Allora probabilmente vorrete creare un post type “recensioni di film”. Si possono anche creare post type personalizzati per portafogli, testimonianze, prodotti e altro ancora.

Inoltre, i post type / tipo di contenuto possono avere diversi campi personalizzati e una propria struttura di categorie personalizzate.

Su WPBeginner, ad esempio, utilizziamo post type / tipo di contenuto personalizzato per le sezioni Offerte e Glossario, per tenerle separate dagli articoli del blog. Questo ci aiuta a organizzare meglio i contenuti del sito web.

Molti plugin WordPress popolari utilizzano post type / tipo di contenuto personalizzato per memorizzare i dati sul vostro sito web WordPress. Di seguito sono elencati alcuni plugin in alto che utilizzano i post type / tipo di contenuto:

  • WooCommerce aggiunge un post type “prodotto” al vostro negozio online.
  • WPForms crea un post type ‘wpforms’ per memorizzare tutti i moduli.
  • MemberPress aggiunge un post type personalizzato “memberpressproduct”.

Video tutorial

Subscribe to WPBeginner

Se preferite le istruzioni scritte, continuate a leggere.

È necessario creare dei post type personalizzati?

Prima di iniziare a creare post type personalizzati sul vostro sito WordPress, importa valutare le vostre esigenze. Spesso è possibile ottenere gli stessi risultati con una normale pagina o post.

Se non siete sicuri che il vostro sito abbia bisogno di tipi di post personalizzati, consultate la nostra guida su quando è necessario un tipo di post o una tassonomia personalizzata in WordPress.

Tenendo conto di ciò, vediamo come creare facilmente post type / tipo di contenuto personalizzati in WordPress per il vostro uso personale. Vi mostreremo due metodi e metteremo in copertina anche alcuni modi per visualizzare i post type personalizzati sul vostro sito web WordPress:

Pronti? Iniziamo.

Creare manualmente un tipo di post personalizzato utilizzando WPCode

La creazione di un post type personalizzato richiede l’aggiunta di codice al file functions.php del tema. Tuttavia, non raccomandiamo questa operazione a nessuno, se non agli utenti esperti, perché anche un piccolo errore può danneggiare il sito. Inoltre, se si aggiorna il tema, il codice viene cancellato.

Utilizzeremo invece WPCode, il modo più semplice e sicuro per chiunque di aggiungere codice personalizzato al proprio sito web WordPress.

Con WPCode è possibile aggiungere snippet personalizzati e attivare molte caratteristiche dalla libreria di codice integrata e preconfigurata. In altre parole, può sostituire molti plugin dedicati o monouso che avete installato.

Per prima cosa, è necessario installare e attivare il plugin gratuito WPCode. Per istruzioni dettagliate, consultate la nostra guida passo-passo su come installare un plugin di WordPress.

Una volta attivato, dalla vostra Bacheca di WordPress navigate su Code Snippets “ Aggiungi snippet. Passare il mouse su “Aggiungi codice personalizzato (nuovo snippet)” e fare clic su “Usa snippet”.

Add custom code in WPCode with new snippet

Si aprirà la schermata “Crea snippet personalizzato”.

Ora è possibile creare il titolo dello snippet di codice e attivare l’interruttore su “Attivo”.

Creating a custom code snippet using WPCode

Dopodiché, è sufficiente incollare il seguente codice nell’area “Anteprima codice”. Questo codice crea un post type personalizzato di base chiamato “Film”, che apparirà nella barra laterale dell’amministratore e funzionerà con qualsiasi tema.

// 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'),
            'show_in_rest' => true,
 
        )
    );
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );

Se si desidera solo un tipo di post personalizzato di base, è sufficiente sostituire film e Film con lo slug e il nome del proprio CPT e fare clic sul pulsante ‘Aggiorna’.

Tuttavia, se si desidera avere ancora più opzioni per il post type personalizzato, si dovrebbe usare il seguente codice invece di quello sopra riportato.

Il codice sottostante aggiunge molte altre opzioni al post type personalizzato “Film”, come il supporto per le revisioni, le immagini in evidenza e i campi personalizzati, oltre ad associare il post type personalizzato a una tassonomia personalizzata chiamata “generi”.

Nota: non combinate questi due snippet, altrimenti WordPress vi darà un errore perché entrambi gli snippet registrano lo stesso post type personalizzato. Si consiglia di creare un nuovo snippet con WPCode per ogni altro post type che si desidera registrare.

/*
* 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', 'twentytwentyone' ),
        'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentytwentyone' ),
        'menu_name'           => __( 'Movies', 'twentytwentyone' ),
        'parent_item_colon'   => __( 'Parent Movie', 'twentytwentyone' ),
        'all_items'           => __( 'All Movies', 'twentytwentyone' ),
        'view_item'           => __( 'View Movie', 'twentytwentyone' ),
        'add_new_item'        => __( 'Add New Movie', 'twentytwentyone' ),
        'add_new'             => __( 'Add New', 'twentytwentyone' ),
        'edit_item'           => __( 'Edit Movie', 'twentytwentyone' ),
        'update_item'         => __( 'Update Movie', 'twentytwentyone' ),
        'search_items'        => __( 'Search Movie', 'twentytwentyone' ),
        'not_found'           => __( 'Not Found', 'twentytwentyone' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwentyone' ),
    );
     
// Set other options for Custom Post Type
     
    $args = array(
        'label'               => __( 'movies', 'twentytwentyone' ),
        'description'         => __( 'Movie news and reviews', 'twentytwentyone' ),
        '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'     => 'post',
        'show_in_rest' => true,
 
    );
     
    // 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 );

Si può notare la parte in cui abbiamo impostato il valore gerarchico su false. Se si desidera che il tipo di post personalizzato si comporti come una pagina piuttosto che come un post, si può impostare questo valore a true.

Un’altra cosa da notare è l’uso ripetuto della stringa twentytwentyone , chiamata “dominio di testo”. Se il tema è pronto per la traduzione e si desidera che i post type / tipi di contenuto personalizzati siano tradotti, è necessario indicare il dominio di testo utilizzato dal tema.

È possibile trovare il dominio di testo del tema all’interno del file style.css nella cartella del tema o andando su Aspetto “ Editor file del tema nel pannello di amministrazione. Il dominio di testo sarà indicato nell’intestazione del file.

Finding the textdomain for a theme

È sufficiente sostituire twentytwentyone con il dominio “Text Domain” del proprio tema.

Una volta soddisfatti delle modifiche, è sufficiente fare clic sul pulsante “Aggiorna” e WPCode si occuperà del resto.

Creare un tipo di post personalizzato con un plugin

Un altro modo semplice per creare un tipo di post personalizzato in WordPress è utilizzare un plugin. Questo metodo è consigliato ai principianti perché è sicuro e facilissimo.

La prima cosa da fare è installare e attivare il plugin Custom Post Type UI. Per maggiori dettagli, consultate la nostra guida passo passo su come installare un plugin di WordPress.

Dopo l’attivazione, è necessario andare su CPT UI ” Aggiungi / Modifica tipi di post per creare un nuovo tipo di post personalizzato. Dovreste trovarvi nella scheda “Aggiungi un nuovo tipo di post”.

Create a New Custom Post Type With a Plugin

In quest’area è necessario fornire uno slug per il post type personalizzato, ad esempio “film”. Questo slug sarà utilizzato nell’URL e nelle query di WordPress, quindi può contenere solo lettere e numeri.

Sotto il campo slug, occorre fornire i nomi plurali e singolari del post type personalizzato.

Se lo si desidera, è possibile fare clic sul link “Popola etichette aggiuntive in base alle etichette scelte”. Questo riempirà automaticamente i campi delle etichette aggiuntive giù in basso e di solito salva il tempo.

Ora si può scendere fino alla sezione “Etichette aggiuntive”. Se non avete cliccato sul link che vi abbiamo indicato, dovrete fornire una descrizione per il vostro post type e cambiare le etichette.

Scroll Down to the Additional Labels Section

Queste etichette saranno utilizzate in tutta l’interfaccia utente di WordPress quando si gestisce il contenuto di quel particolare tipo di post.

Segue l’impostazione del post type. Da qui è possibile impostare diversi attributi per il tipo di post. Ogni opzione è accompagnata da una breve descrizione che ne spiega l’utilità.

Scroll Down to the Post Type Settings Section

Ad esempio, si può scegliere di non rendere un tipo di post gerarchico come le pagine o di ordinare i post cronologici al contrario.

Sotto le impostazioni generali, si trova l’opzione per selezionare le funzioni di modifica supportate da questo tipo di post. È sufficiente selezionare le opzioni che si desidera includere.

Check the Supports Options You Want to Include

Infine, fare clic sul pulsante “Aggiungi tipo di post” per salvare e creare il tipo di post personalizzato.

È tutto, avete creato con successo il vostro post type personalizzato! Ora si può iniziare ad aggiungere contenuti.

Visualizzazione dei tipi di post personalizzati sul sito

WordPress è dotato di un supporto integrato per la visualizzazione dei post type / tipi di contenuto personalizzati. Una volta aggiunti alcuni elementi al nuovo post type personalizzato, è il momento di visualizzarli sul sito web.

I metodi che si possono utilizzare sono diversi e ognuno ha i suoi vantaggi.

Visualizzare i tipi di post personalizzati usando il modello di archivio predefinito

Innanzitutto, è sufficiente andare in Aspetto ” Menu e aggiungere un link personalizzato al menu. Questo link personalizzato è il collegamento al tipo di post personalizzato.

Add a Custom Link to Your Menu

Se si utilizzano permalink SEO-friendly, l’URL del tipo di post personalizzato sarà probabilmente qualcosa di simile:

http://example.com/movies

Se non si utilizzano permalink SEO-friendly, l’URL del tipo di post personalizzato sarà qualcosa di simile:

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

Non dimenticate di sostituire “example.com” con il vostro nome di dominio e “movies” con il nome del vostro tipo di post personalizzato.

Si può quindi salvare il menu e visitare il frontend del sito web. Si vedrà la nuova voce di menu aggiunta e, facendo clic su di essa, si visualizzerà la pagina di archivio del post type personalizzato, utilizzando il template file archive.php del tema.

Preview of Custom Post Type Menu Item

Creare modelli di tipi di post personalizzati

Se non vi piace l’aspetto della pagina di archivio per il vostro tipo di post personalizzato, potete utilizzare un modello dedicato per gli archivi dei tipi di post personalizzati.

È sufficiente creare un nuovo file nella cartella del tema e chiamarlo archive-movies.php. Assicuratevi di sostituire ‘movies’ con il nome del vostro tipo di post personalizzato.

Per iniziare, si può copiare il contenuto del file archive.php del proprio tema nel modello archive-movies.php e modificarlo in base alle proprie esigenze.

Ora, ogni volta che si accede alla pagina di archivio del post type personalizzato, questo template verrà utilizzato per visualizzarla.

Allo stesso modo, è possibile creare un template personalizzato per la visualizzazione a voce singola del proprio post type. Per farlo, è necessario creare single-movies.php nella directory del tema. Non dimenticate di sostituire ‘movies’ con il nome del vostro post type personalizzato.

Si può iniziare copiando il contenuto del template single.php del tema nel template single-movies.php e modificandolo in base alle proprie esigenze.

Per saperne di più, consultate la nostra guida su come creare modelli di post singoli personalizzati in WordPress.

Visualizzazione dei tipi di post personalizzati in prima pagina

Un vantaggio dell’uso dei tipi di post personalizzati è che questi mantengono separati i tipi di contenuto personalizzati dai normali post. Tuttavia, se lo si desidera, è possibile visualizzare i post type personalizzati sulla home page del sito web.

È sufficiente aggiungere questo codice come nuovo snippet utilizzando il plugin gratuito WPCode. Per istruzioni dettagliate, consultare la sezione di questo articolo dedicata all’aggiunta manuale del codice.

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 dimenticate di sostituire ‘movies’ con il vostro tipo di post personalizzato.

Interrogare i tipi di post personalizzati

Se si ha familiarità con la codifica e si desidera eseguire query ad anello nei propri template, ecco come fare. Interrogando la base dati, è possibile recuperare elementi da un tipo di post personalizzato.

È necessario copiare il seguente frammento di codice nel modello in cui si desidera visualizzare il 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 endwhile;
wp_reset_postdata(); ?>
<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

Questo codice definisce il tipo di post e il numero di post per pagina negli argomenti della nostra nuova classe WP_Query. Quindi esegue la query, recupera i post e li visualizza all’interno del ciclo.

Visualizzazione dei tipi di post personalizzati nei widget

Si noterà che WordPress ha un widget predefinito per visualizzare i post recenti, ma non consente di scegliere un post type personalizzato.

E se si volesse visualizzare in un widget le ultime voci del post type appena creato? Fortunatamente, esiste un modo semplice per farlo.

La prima cosa da fare è installare e attivare il plugin Custom Post Type Widgets. Per maggiori dettagli, consultate la nostra guida passo passo su come installare un plugin di WordPress.

Dopo l’attivazione, è sufficiente andare su Aspetto ” Widget e trascinare il widget ‘Post recenti (Custom Post Type)’ in una barra laterale.

Recent Custom Post Type Widget

Questo widget consente di mostrare i post recenti di qualsiasi tipo di post. È necessario selezionare il tipo di post personalizzato dal menu a tendina ‘Post Type’ e selezionare le opzioni desiderate.

Dopodiché, fate clic sul pulsante “Aggiorna” nella parte superiore dello schermo e visitate il vostro sito web per vedere il widget in azione.

Preview of Recent Custom Post Type Widget

Il plugin fornisce anche widget di tipo post personalizzati che visualizzano archivi, un calendario, categorie, commenti recenti, ricerca e una nuvola di tag.

Quindi, sentitevi liberi di esplorare e scegliere quello di cui avete bisogno.

Custom Post Type Archives Widget

Speriamo che questo tutorial vi abbia aiutato a imparare come creare post type / tipo di contenuto personalizzati in WordPress. Potreste anche voler imparare a creare una pagina di archivio personalizzata in WordPress o dare un’occhiata al nostro elenco di pagine importanti che ogni blog WordPress dovrebbe avere.

Se questo articolo vi è piaciuto, iscrivetevi al nostro canale YouTube per le esercitazioni video su WordPress. Potete trovarci anche su Twitter e Facebook.

Divulgazione: I nostri contenuti sono sostenuti dai lettori. Ciò significa che se cliccate su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come WPBeginner è finanziato , perché è importante e come puoi sostenerci. Ecco il nostro processo editoriale .

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

Il kit di strumenti WordPress definitivo

Ottenete l'accesso gratuito al nostro kit di strumenti - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Reader Interactions

130 commentiLascia una risposta

  1. R Davies

    You have a syntax error in your second (more detailed) example, code does not work in latest Wordpress 7.4.3

    ) Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘custom_post_type’ not found or invalid function name

    Any chance of an update / correction?

  2. Archit

    Is the comma at the end if the supports array (in the options for the custom post type) deliberate?

    • Robert Stuart

      On line 31? Yes, that’s normal PHP code.
      “The comma after the last array element is optional and can be omitted. This is usually done for single-line arrays, i.e. array(1, 2) is preferred over array(1, 2, ). For multi-line arrays on the other hand the trailing comma is commonly used, as it allows easier addition of new elements at the end.”

  3. saurabh

    How to enable ‘Post Settings’ in Custom_Post_type (using Custom Post Type UI Plugin)?

  4. Arias

    Hello, I have been having problems with this plugin.

    It has disabled the option to create categories and tags,
    I have been looking for an example to place them manually but I still have not found anything.

    I am trying to undo if with this method I can fix the problem but I would greatly appreciate your help.

    • stormonster

      In your $args array, on the ‘taxonomies’ index, add ‘category’ and ‘post_tag’.
      That should do the trick.

  5. John D

    Way too much coding. Wordpress need to keep things more simple.

    • Ilija

      This is why I use my own CMS where I can create new post types in a fraction of a second directly through cms itself. Without any coding, unfortunately big agencies want Wordpress developers and have to learn it, seems so complicated..

  6. Sarah A

    Hi, i’ve succeded to display group of CPT with a specific design in a pop-up when you click on a image like the first one But it opens a new page and when you click out of the pop-up to quit you don’t return to the homepage, and i don’t want that. I want all on the homepage.

    I’ve put the code of the CPT to display as the pop-up on “single-chg_projet.php” and open and close the pop-up with javascript. I’ve already tried to put all the code of single-chg_projet.php on the index, but it display nothing. Or i may be failed somewhere. Please help me. Thanks

  7. Ghulam Mustafa

    Hi,

    Thanks for the great code. Just a minor correction to the code. The endwhile; statement is missing before else: statement in the Querying Custom Post Types section =)

    • Tony Peterson

      THIS! Please update your code to reflect this syntax error as it caused me a bit of heartache until I found Ghulam’s comment. It’s working now.

    • Arkanum

      Yes! True. It’s miss befire wp_reset_postdate();
      The cycle while does not end :)

  8. Azamat

    Typo: “When doi I need a custom post type?”

  9. Jhon

    hey, can you guide me in the process of making a custom glossary like you have on your site?

  10. Anil Reddy

    I want to create list type for posts in the category page for my website

  11. david ben oren

    how do i clone a post type which has a speicifc table in it, i need to create a seperate post type for other tables.

  12. betty

    How do I add a custom field to a Post Type?

  13. Megan

    I’ve downloaded the plugin and want to add two custom post types. 1. Fanfiction for all of my writings and 2. Fanart for all of my art.

    For Fanfiction – I want the ability to link chapters together into a story and be able to upload chapters to a story as I write them.

    For Fanart – I’d like to have the focus be on an image (obviously) with a description underneath it

    Is this article what I need or this something completely different?

    Thanks,
    Megan

  14. Zubair Abbas

    Hi,

    I simply copied the code to my site’s functions.php. The new post type is visible in the dashboard but when I try to see a post after publishing it, a blank page appears. Later I realised that even the default posts are not opening.

    When I remove the code from functions.php everything works fine again.

    Please help :(

    Thanks,

    Zubair Abbas

    • Jouke Nienhuis

      If you see a blank page, it often means that you forgot a character. The fact that you see the posts if you delete your custom code, confirms that you have a typo. Check for semi-colons ” ; ” and the opening and closing brackets.
      To see exactly where you made a mistake, you could edit the wp-config file. Look for ERROR REPORTING and set this value to true. After that test again and there you get an error and a line with the omission.

  15. Alex

    I have created the CPT and is working beautifully, but Google cannot find it even after updating sitemaps, using SEO plugins or fetching on Google Webmaster Tools. Any thoughts on why is that happening?

    • WPBeginner Support

      It takes Google sometime to start showing new content in search results. Just to be on safe side, check your SEO plugin settings to make sure you are not blocking indexing of your CPTs or CPT archive pages.

      Admin

  16. Amunet

    Creating Custom Post Type can be easy especially with a plugin. The real trick is to show them on the page. Usually you need quite advanced custom development or theme specific plugins like that for Avada.

    Unfortunately there is no universal way to display CPT in WordPress.

    • WPBeginner Support

      Actually, there are straight forward and standard ways to display CPTs in WordPress. We have mentioned one in the article above.

      Admin

    • Jouke Nienhuis

      Like the author said, but I will repeat the answer.
      In a nutshell create a link in your navigation menu
      Advanced answer in a nutshell: create an archive page and a single page

  17. Chuck

    Great article. How can you modify single post CPT post info based on the custom taxonomy? For instance:

    Date | Author | Series | Book | Topic

    This is easy to write but I want to figure out how to display a modified post info if one the missing taxonomy of Series, like:

    Date | Author | Book | Topic

    Otherwise the default post info displays as:

    Date | Author | | Book | Topic

  18. borahan

    I want to diplay specific category posts for current user in page. How can i do it?

  19. Moazam Ali

    Dear,

    Thanks for the post. I want to make a library of ebooks and want to use custom post type and portfolio to show the thumbnails of books in front end. Can you please guide how i can do that?

  20. Sharon Wallace

    Hello All,
    This is a great plugin. I’m trying to get the taxonomy to show on the page. I created one called Presenters. You can see it here.

    How can I make that happen?

    Thank you

  21. Dave S.

    Hi,
    I have created a form (using ArForms plugin) which I need it to be turned into a Post-Type. Do you have any suggestions as to how to accomplish this please?

    Thank you.

  22. Mark Greenway

    Thanks for this, exactly what I needed to know to help me get to grips with custom post types.

    Mark.

  23. shashik

    Thanks dear..it’s very useful..

  24. Graham

    Thank you! Just what I was looking for. It’s amazing how many times I find wordpress work-arounds and then forget how I do them and keep having to come back.

    Much appreciated!

  25. Ram

    Very useful! Thank you….

  26. MELAS

    Dear,

    I don’t have a lot of knowledge about coding. How can I see on the specific page theses Custom post types and taxonomies?

    Thanks in advance!
    MELAS

  27. Mike Ritter

    Is there an error? Shouldn’t the function be `create_post_type`?

  28. Vera

    Hello,
    Thank yo for this beautiful tutorial.
    I have gone and done everything as you said.
    Two things I do not understand:
    1.
    You have specified taxonomy “genre”. Where is that set up? What if I want to make the actual genres underneath that? How do I make them? Where do I see them?
    2.
    I would like to make the menu links to the “Movies” and underneath – sublinks to “Genres”. I can see the “Movies” in the Menu section, each post, like pages. Don’t really need that, but I won’t mind. How to see the “Genres” in there?
    Thank you,
    Vera

    • WPBeginner Support

      Seems like you have successfully created your custom post type, i.e. Movies. The next step is to create custom taxonomy, Genres. A taxonomy is a way to sort content in WordPress. Categories and tags are two default taxonomies that come built in with WordPress and are by default associated with ‘Posts’. Please see our tutorial on how to create custom taxonomies in WordPress. Follow the instructions in that tutorial to create your custom taxonomy Genres and associate it with the post type movies. Your custom taxonomy will appear below the Movies menu in WordPress admin area.

      Admin

  29. Hamed 3daJoo

    I do All Of This but when i want to public a post by this post type my post types redirects to main page (i Just coppied your code without any changes)
    for example i write this post with Movies post type

    please help me ilove post type but i can’t use it correctly

    • Ciprian

      Have you tried re-saving the permalinks structure?

      Cheers!

  30. Aaron

    Excellent post! Thanks for the content.. helped a lot.

  31. antonio

    hi i’m trying to add the snippet of code fort the post type movie… i copied it into functions.php but when i refresh the page nothing is shown. i’m using the twenty fourteen theme… what can be wrong?

  32. ashish shestha

    How to display Csutom post type in front End??

  33. Fahd

    Hi, Custom post types on my wordpress website were working fine from last 2 years. But what happend is when I change the title of post and click update it save other changes too. But if I keep the post title same and make changes in the post, it doesn’t save it. Any recommendations please?

  34. Arup Ghosh

    I want to create a custom post type coupons with reveal coupon option and the code will link to the store url, can you tell me how can I do that. I don’t have much knowledge about coding.

  35. Isaías Subero

    Great articule. How can I add icons to custom post types on the wordpress back-end just like it is shown on the picture?

    • Jouke Nienhuis

      it is one of the arguments ($args) when defining the custom post type.
      Add ‘menu-icon’ => ‘dashicons-cart’ to the $args list.
      WordPress uses built-in dashicons, but you can also use your own icons.
      More information on this link:

  36. Johan

    Hi, the excerpt and the custom fields data is not displaying in the front end… any idea of why this is happening?

  37. Bill Querry

    I forgot to mention, prreferably via code for my functions.php file since that’s where the curernet CPT are defined.

  38. Bill Querry

    I am looking at a way to add categories to some existing custom post types. Anyone able to point me in the right direction?

    • Jouke Nienhuis

      You can add new taxonomies to an existing Post Type (custom or not) just by filling in the right post-type when you write the function to create it. Category is just a taxonomy name which includes all posts with a category.
      If you want to make a new category, just click on category on the menu and create a new one.
      Examples of categories are Boats if your post is about boats or planes if your post is about planes. More categories is also possible, just select or add them in the right sidecolumn when you are writing your new post or editing one.
      A post type is not attached or linked to a specific category, a post is.

  39. Robey Lawrence

    I just tried to use the snippet under
    Querying Custom Post Types,
    and figured out it needs a before the reset.

  40. YassinZ

    Thanks for the clean handy article
    I just want to use the text editor in the custom post
    so that I can use html tags,

  41. Yassin

    thanks for such an awesome clear tutorial
    but I’m faceing a problem in displaying the CPT I’m using SEO friendly permalinks when I direct to may website/movies the CPT are duplicated

  42. Aris Giavris

    Very useful! Thank you.

    I would like to add to every tag of my posts one of the following signs: +, -, +/-. May I?

    If so, then I would like to have the choice to represent the signed tags as follow: all the +tags, all the -tags, all the +/-tags.

    I think I am questioning a lot of things.

  43. Placid

    Hi,

    I am having a hard time implementing a custom post type correctly. I have searched for a solution for a long time but couldn’t find any. Here’s what I did:

    1. Freshly installed WordPress in my local wamp server (enabled apache rewrite_module first).

    2. Using default theme (twenty fourteen). No plugins installed.

    3. Changed permalinks to “Post name”

    4. In the plugins folder, created a folder named pr_custom_posts and inside that, created a file named pr_custom_posts.php. In the file I created a custom post type. The code is as follows:

    register_post_type();

    //flush_rewrite_rules();

    }

    public function register_post_type () {

    $args = array(

    ‘labels’ => array (

    ‘name’ => ‘Movies’,

    ‘singular_name’ => ‘Movie’,

    ‘add_new’ => ‘Add New Movie’,

    ‘add_new_item’ => ‘Add New Movie’,

    ‘edit_item’ => ‘Edit Movie’,

    ‘new_item’ => ‘Add New Movie’,

    ‘view_item’ => ‘View Movie’,

    ‘search_items’ => ‘Search Movies’,

    ‘not_found’ => ‘No Movies Found’,

    ‘not_found_in_trash’ => ‘No Movies Found in Trash’

    ),

    ‘query_var’ => ‘movies’,

    ‘rewrite’ => array (

    ‘slug’ => ‘movies/’,

    ‘with_front’=> false

    ),

    ‘public’ => true,

    ‘publicly_queryable’ => true,

    ‘has_archive’ => true,

    ‘menu_position’ => 10,

    ‘menu_icon’ => admin_url().’/images/media-button-video.gif’,

    ‘supports’ => array (

    ‘title’,

    ‘thumbnail’,

    ‘editor’

    )

    );

    register_post_type(‘jw_movie’, $args);

    //flush_rewrite_rules();

    }

    }

    add_action(‘init’, function() {

    new PR_Movies_Custom_Post();

    //flush_rewrite_rules();

    });

    ?>

    The Good Thing: The CPT is showing in my admin panel and I can add and view movies there.

    THE PROBLEM: I cannot preview the movies in the front end (By clicking the “view” in the CPT in admin panel). It shows in the front end only when I set permalink to default (http://localhost/wp02/?p=123).

    What I have tried:

    1. Go to permalink, keep permalink settings to “Post name” and Save changes.

    2. Use flush_rewrite_rules() in several places (one by one) in my code. Please see the commented out parts in the code above.

    3. Created a menu item as:

    URL: http://localhost/wp02/movies

    Navigation Label: Movies

    This creates a menu item in the front end but shows “Not Found” when “Movies” link is clicked.

    This is driving me crazy. Can anyone please help on this? I would really appreciate.

    • kikilin

      I was going crazy too with the same “Not Found” issue, until I tried this: go to Settings > Permalinks and then re-save your settings. I had switched my setting to Default, and then changed it to Post Name (for my project’s needs). After that, links were working as expected.

    • rehan

      Helpfull tutorials and posts :D thanks

  44. ceslava

    Another easy way is just duplicate the archive.php and rename it to archive-movies.php and the same for single.php -> single-movies.php

    Then you can make tweaks to the php files for your theme.

    Best regards

  45. Achilles Khalil

    Very hard to display. please can you make a video tutorial ?

  46. Mik

    Hi, I’ve been reading and following your posts for so long now, you are amazing, and targeting those missing stuff of beginners… Thank you.

  47. Davide De Maestri

    This plugin should be okay, but after every upgrade they’ve got some bug. Due to exporting field, or while migrating from local to remote etc… So It’s better to hand-write the code and put into functions.php :D

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tenga presente che tutti i commenti sono moderati in base alle nostre politica dei commenti e il suo indirizzo e-mail NON sarà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avremo una conversazione personale e significativa.