I tipi di post personalizzati sono uno degli elementi chiave da comprendere se si desidera creare siti WordPress flessibili, di livello professionale.

I tipi di post personalizzati consentono di aggiungere il proprio tipo di dati; quello può essere un articolo, una canzone, un film o migliaia di altre cose. I tipi di post personalizzati ti consentono di classificare i tuoi dati in base alle tue esigenze individuali, che a loro volta ti consentono di avere un maggiore controllo sul comportamento del tuo sito.

In questo articolo ti mostrerò come creare un tipo di post del film personalizzato per un database di film.

Perché utilizzare i tipi di post personalizzati?

Per creare un sito web di film, abbiamo bisogno di creare un database. Per farlo senza tipi di post personalizzati sarebbe estremamente difficile, e potenzialmente si scontrano con la nostra installazione WordPress esistente. Tuttavia, il nostro tipo di post personalizzato avrà il proprio menu di amministrazione e la pagina di modifica personalizzata, se volessimo potremmo aggiungere anche tassonomie personalizzate alla pagina con i nomi e le proprietà che si adattano al progetto.

I tipi di post personalizzati sono ciò che porta WordPress da una piattaforma di blogging a un CMS in piena regola. Ci danno la libertà di creare il nostro sito web di film senza brutti hack.

Creare il nostro tipo di filmato

In questo articolo esporrò tutto il codice necessario per creare un tipo di post personalizzato, quindi lo esamineremo riga per riga in modo da poter apprendere ciò che ciascuna parte fa e personalizzarla in base alle esigenze.

Ecco il codice completo che viene aggiunto al tuo file functions.php :

add_action( 'init', 'register_movie' );function register_movie() {$labels = array('name' => 'Movies','singular_name' => 'Movie','add_new' => 'Add New','add_new_item' => 'Add New Movie','edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie','search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash','menu_name' => 'Movies',);$args = array('labels' => $labels,'hierarchical' => false,'description' => 'Here you will add all the movies for the database','supports' => array( 'title', 'editor', 'thumbnail' ),'taxonomies' => array( 'genre', 'movies', 'year' ),'public' => true,'show_ui' => true,'show_in_menu' => true,'menu_position' => 5,//'menu_icon' => the image link here,'show_in_nav_menus' => true,'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,'query_var' => true,'can_export' => true,'rewrite' => true,'capability_type' => 'post');register_post_type( 'movie', $args );}

Come puoi vedere, un pezzo di codice piuttosto grande va nella creazione di un tipo di post personalizzato, ma se lo capisci sarai in grado di ottenere questo codice e adattarlo ai tuoi progetti. Nella prima riga colleghiamo la funzione con il nostro tipo di post personalizzato a init e questo significa che la nostra funzione verrà attivata quando WordPress farà in modo che lo avremo sempre nella nostra dashboard:

add_action( 'init', 'register_movie' );

Le etichette

Nella riga successiva iniziamo dichiarando il nome della nostra funzione e una variabile con tutte le etichette che saranno associate al nostro tipo di post di film in modo che tutto possa essere personalizzato.

La prima cosa che dichiariamo nelle etichette è il nome del nostro tipo di messaggio personalizzato, al plurale e singolare:

'name' => 'Movies','singular_name' => 'Movie',

Nelle prossime due righe dobbiamo specificare il nostro Aggiungi nuovo testo (se vogliamo cambiarlo) e quindi impostare Aggiungi nuovo filmato in modo che quando aggiungiamo un nuovo film abbiamo un'esperienza personalizzata invece di aggiungere un film e avere un titolo che dice "Aggiungi nuovo messaggio".

'add_new' => 'Add New','add_new_item' => 'Add New Movie',

Dopo le etichette per la creazione di un nuovo film, dobbiamo impostare le etichette per la modifica, il nuovo testo dell'articolo (di default è Nuovo post / Nuova pagina) e dobbiamo anche impostare il testo del post di visualizzazione:

'edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie',

Ora nelle etichette passiamo alle funzionalità di ricerca nell'amministratore wordpress e alle nostre etichette per questo. Dobbiamo impostare le etichette per quando cerchiamo i film, quando non vengono trovati risultati e anche quando non vengono trovati risultati nel cestino:

'search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash',

L'ultima etichetta parla da sola, qui dobbiamo inserire il nome che vogliamo che il tipo di post personalizzato abbia nell'interfaccia utente del menu, in questo caso ci limitiamo a "Film":

'menu_name' => 'Movies',);

Gli argomenti

Ora dobbiamo passare ai nostri argomenti, per questo ho creato un'altra variabile che conterrà tutti gli argomenti, l'ho chiamata args.

Il primo argomento che chiede sono le etichette e tutto ciò che dobbiamo fare è puntare alla variabile delle etichette che abbiamo appena esaminato, in questo modo:

$args = array('labels' => $labels,

Nella riga successiva dobbiamo impostare se il nostro tipo di post sarà gerarchico come pagine o meno (come i post). Nel mio caso, non voglio che i film siano gerarchici, quindi l'ho impostato su false. La riga successiva è solo una descrizione facoltativa del tipo di post.

'hierarchical' => false,'description' => 'Here you will add all the movies for the database',

La prossima linea è importante; qui dobbiamo specificare cosa supporterà il nostro tipo di post personalizzato, quali campi avrà. Le opzioni per questo campo sono:

  • 'titolo'
  • 'Editor'
  • 'autore'
  • 'Miniature'
  • 'estratto'
  • 'riferimenti'
  • 'Campi personalizzati'
  • 'Commenti'
  • 'revisioni'
  • 'page-attributi'
  • 'post-formati'

Nel mio caso e per il mio tipo di post voglio solo che supporti il titolo, l' editor WYSIWYG , una miniatura e commenti e per farlo ho bisogno di aggiungere un array in questa riga, in questo modo:

'supports' => array( 'title', 'editor', 'thumbnail','comments' ),

Nella riga successiva dobbiamo specificare quali tassonomi verrà utilizzato e, poiché creeremo delle tassonomie personalizzate, quelle che verranno aggiunte in questa riga saranno:

'taxonomies' => array( 'genre', 'actors', 'year' ),

Le prossime tre righe hanno a che fare con la visibilità del tipo di post nell'area di amministrazione e tutto ciò che faccio è impostato su true:

'public' => true,'show_ui' => true,'show_in_menu' => true,

Successivamente passiamo alla posizione del menu in cui dovrebbe apparire il tipo di post. Qui abbiamo anche molte opzioni tra cui scegliere:

  • 5 - Sotto i post
  • 10 - Sotto Media
  • 15 - Sotto i collegamenti
  • 20 - Pagine sottostanti
  • 25 - Sotto i commenti
  • 60 - Sotto il primo separatore
  • 65 - Sotto i plugin
  • 70 - Sotto Utenti
  • 75 - Sotto Strumenti
  • 80 - Sotto le impostazioni
  • 100 - Sotto il secondo separatore

Nel mio caso volevo che i film comparissero subito dopo i post, quindi ho impostato la sua posizione del menu su 5, in questo modo:

'menu_position' => 5,

Nella riga successiva ci occupiamo dell'icona, possiamo impostare la nostra icona o lasciarla vuota e otterremo l'icona dei post, la linea dopo che si occupa di ciò che vogliamo che questo tipo di messaggio appaia per la selezione nei nostri menu .

'menu_icon' => //the image link here,'show_in_nav_menus' => true,

Nelle prossime 3 righe aggiungiamo le funzionalità del tipo di post; per prima cosa stabiliamo se vogliamo che quel tipo di messaggio venga interrogato sul front-end, quindi decidiamo se vogliamo che i risultati del tipo di post siano esclusi dalle ricerche e, infine, decidiamo se vogliamo un tipo di archivio per i film:

'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,

Nella prossima riga impostiamo la variabile di query per il nostro tipo di post e questo definirà l'aspetto dell'URL, per questa opzione abbiamo tre possibili parametri: possiamo impostarlo su true e quindi possiamo raggiungere il film usando /? Movie = name_of_movie; possiamo impostarlo su una stringa in modo che il film nell'URL venga sostituito da tutto ciò che vogliamo, come "show" e dovremmo usare /? show = name_of_movie per raggiungere lo stesso film; l'ultima opzione è impostarla su false e in questo modo non è possibile raggiungere un film utilizzando query_var. Nel mio caso, e pensando a quest'ultima opzione, ho impostato la mia query var su true in modo da poterla raggiungere con query_var del film:

'query_var' => true,

Nella riga successiva decidiamo se vogliamo che i film siano esportabili e quindi scegliamo lo slug per questo tipo di post, nel mio caso mi limito ad avere "movie" come lo slug ma puoi scegliere qualsiasi stringa per essere il slug e in effetti hai un sacco di opzioni, questo parametro è ampio.

'can_export' => true,'rewrite' => true,

La linea finale dei nostri argomenti è dove impostiamo il tipo di capacità del nostro post e dal momento che voglio che abbia esattamente gli stessi dei post normali, gli ho dato il valore del post, in questo modo:

   'capability_type' => 'post');

Le nostre etichette e argomenti sono fatti, tutto quello che dobbiamo fare ora è registrare il nostro tipo di post e la funzione register_post_type prende due parametri, il primo è il nome del nostro tipo di post personalizzato (questo ha un massimo di 20 lettere e senza lettere maiuscole o spazi) e il secondo è gli argomenti per il tipo di post e in questo inseriremo semplicemente la nostra variabile args:

    register_post_type( 'movie', $args );}

Il nostro tipo di post è creato e completamente funzionale e tutto ciò che serve per vederlo nelle tue pagine è un po 'di magia wp_query .

Parole finali

Spero che tu possa capire perché così tante persone usano tipi di post personalizzati in WordPress.

Questo articolo ha lo scopo di darti una comprensione del processo di creazione di un tipo di post personalizzato e ti offre un punto di partenza per creare i tuoi incredibili tipi di post personalizzati.

Immagine in primo piano / miniatura, immagine personalizzata di ATOMIC Hot Links, via Flickr.