Creazione di tipi di post personalizzati
Pubblicato: 2016-08-23WordPress non è stata “ solo una piattaforma di blogging ” per un po' di tempo ormai. Una delle caratteristiche chiave che l'hanno aiutato a trasformarsi in un vero e proprio sistema di gestione dei contenuti (CMS) sono i tipi di post personalizzati .
Questo è il primo articolo di una serie in 3 parti sul tema dei tipi di post personalizzati (CPT). Questi sono gli argomenti di cui parleremo nei prossimi due:
- Tassonomie personalizzate
- Visualizzazione di tipi di post personalizzati (modelli e query)
Ma per ora, diamo un'occhiata più da vicino ai tipi di post personalizzati e a come configurarli.
Che cos'è un tipo di post personalizzato?
Per impostazione predefinita WordPress utilizza questi tipi di post:
- Inviare
- Pagina
- Allegato
- Revisione
- Elemento del menu
Allora, cos'è un tipo di post personalizzato? Un tipo di post personalizzato è fondamentalmente un post di WordPress con parametri personalizzati (campi personalizzati, struttura personalizzata di categorie/tag, …). I classici esempi di tipi di post personalizzati sono: libri, recensioni, testimonianze, membri del team, portfolio e così via. Ma puoi usarlo per qualsiasi cosa indichi il tipo di contenuto che crei.
Perché dovresti usarne uno?
Potresti semplicemente utilizzare i normali post di WP e utilizzare categorie e tag, per separare i diversi "tipi di post". Ma questo non è l'ideale e può portare a complicazioni lungo la strada. Ecco alcuni motivi per cui potresti voler utilizzare un tipo di post personalizzato:
- Se desideri separare alcuni contenuti da altri tipi di post disponibili in WordPress
- Hai bisogno di alcuni campi personalizzati esclusivi del contenuto che desideri pubblicare
- Devi visualizzare il contenuto in modo diverso rispetto ad altri tipi di post (come post o pagine)
Diciamo che stai scrivendo un blog di cucina. Di solito pubblichi critiche sui ristoranti, ma vorresti anche pubblicare le tue ricette. Le ricette costituirebbero un tipo di post personalizzato perfetto , perché probabilmente avresti bisogno di un layout diverso rispetto a un post normale. Forse anche alcuni campi personalizzati, come gli ingredienti, per esempio. Con l'introduzione di una ricetta CPT , la sezione del blog conterrebbe solo il tuo normale post e le tue ricette avrebbero una propria sezione (propria pagina di archivio delle ricette). Ciò renderebbe più facile per i visitatori che vogliono solo guardare le tue ricette.
In questa serie di articoli creeremo le testimonianze CPT per il nostro tema Shaka. Diciamo che un utente vuole avere una pagina in cui può visualizzare tutte le testimonianze dei clienti. Vuole aggiungere alcuni campi personalizzati a questo tipo di post personalizzato e vuole anche un layout diverso per visualizzare queste testimonianze. Diamo prima un'occhiata a come registrare un tipo di post personalizzato.
Come puoi creare un tipo di post personalizzato?
Esistono due modi per creare un nuovo tipo di post personalizzato.
La prima opzione è utilizzare un plug-in che registrerà il tipo di post personalizzato per te. Questo metodo è utile per gli utenti che non hanno familiarità con il codice PHP. Inserisci solo i dettagli necessari e il plugin fa il resto.
Il secondo metodo consiste nel registrare manualmente il tipo di post personalizzato. Ciò significa che devi scrivere del codice, ma non farti prendere dal panico, è abbastanza semplice e ti mostrerò anche un trucco accurato.
Crea un tipo di post personalizzato con un plug-in: il modo più semplice
Se desideri aggiungere rapidamente e facilmente un tipo di post personalizzato al tuo sito, dovresti utilizzare un plug-in che offra tale funzionalità. Probabilmente il plugin più popolare per farlo è Custom Post Type UI, è gratuito e facile da usare. configuriamolo:
- Installa e attiva il plug-in dell'interfaccia utente del tipo di post personalizzato dalla dashboard di wp-admin,
- Una volta attivato il plug-in, sarà disponibile la voce di menu di amministrazione dell'interfaccia utente CPT. Vai a CPT UI -> Aggiungi/Modifica tipi di post,
- Qui troverai molte impostazioni che puoi applicare per personalizzare il tuo CPT. Non li esamineremo tutti in dettaglio in questo articolo. Ma c'è un'icona di suggerimento accanto a ciascuna etichetta di impostazione per spiegare cosa fa ogni impostazione. Impostiamo le cose di cui abbiamo bisogno per il nostro caso d'uso (CPT testimoniale),
- Inserisci lo slug: testimonianze, etichetta plurale: Testimonianze e etichetta singolare: Testimonial,
- È possibile fare clic sul pulsante Modifica etichette aggiuntive per impostare etichette più precise. Ma possiamo saltare questo e tornare se vediamo un problema in seguito,
- Tutte le impostazioni predefinite sono ok per il nostro caso d'uso, aggiungeremo semplicemente il supporto per i campi personalizzati (seleziona la casella di controllo Campi personalizzati nella sezione Supporti),
- Fare clic su Aggiungi tipo di post per creare il tipo di post personalizzato.
Non appena creiamo il tipo di post personalizzato, viene visualizzata una nuova voce di menu del dashboard di Testimonianze wp-admin. Ora possiamo creare nuove testimonianze con tutti i campi che sono stati selezionati quando abbiamo creato il tipo di post personalizzato (Titolo, Editor, Immagine in evidenza e Campi personalizzati).
Potremmo anche impostare una tassonomia per questo tipo di post personalizzato, ma ne parleremo nel prossimo articolo.
Crea manualmente un tipo di post personalizzato, con la codifica coinvolta
Potresti chiederti: se puoi creare un tipo di post personalizzato con un plug-in, perché qualcuno dovrebbe volerlo creare manualmente, con il codice?
La possibilità di crearne uno con un plugin è sicuramente molto conveniente , ma ci sono casi in cui vorresti farlo tramite codice. Ad esempio, se stai sviluppando un sito per il tuo cliente e non vuoi che il client possa modificare queste impostazioni, o se non vuoi installare un altro plugin sul suo sito. Inoltre, se desideri creare un tema (o un tema figlio) da utilizzare su più siti, è più facile registrare il tipo di post personalizzato nel codice piuttosto che ripetere i passaggi del plug-in per ogni sito. Ci sono alcuni pro e contro per ogni metodo, quindi devi decidere cosa è meglio nel tuo caso.
Il codice per creare un tipo di post personalizzato può essere inserito direttamente in un tema (in functions.php ). Oppure puoi creare un nuovo plugin e inserire il codice CPT lì. Questa è anche una domanda divisiva nella comunità di WordPress. Un lato dice che dovrebbe trovarsi nel plugin , in modo che se cambi il tema, i dati del CPT rimangano (ma l'output non è in stile e non ha un bell'aspetto nel nuovo tema). E l'altra parte pensa che sia meglio inserire il codice CPT direttamente nel tema , perché è specifico del tema ed è anche disegnato in modo specifico per questo tema.

Personalmente, penso che sia sempre meglio separare lo stile (tema) dalla funzionalità (plugin) e quindi creare un nuovo plug-in per la registrazione CPT sia un'opzione migliore . È più facile aggiungere uno stile al nuovo tema per fare in modo che l'output di CPT abbia un bell'aspetto piuttosto che perdere i dati del CPT a causa del passaggio a un nuovo tema.
Registra un tipo di post personalizzato con il codice
Ho promesso un bel trucco, vero? Bene, in realtà non è necessario scrivere codice per poter registrare un tipo di post personalizzato tramite codice. Potrebbe suonare strano, ma è vero. Puoi utilizzare questo strumento su generatewp.com per generare il codice necessario per la registrazione CPT. Tutto quello che devi fare è inserire alcuni dati e generare il codice. L'ho fatto per il nostro caso d'uso delle testimonianze e questo è quello che è uscito:
// Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );
… Un codice PHP perfettamente valido che puoi utilizzare nei tuoi progetti. Come discusso in precedenza, puoi inserire questo codice in un plug-in appena creato oppure puoi inserirlo nel file functions.php del tema. Per semplicità ho optato per quest'ultimo. Ho inserito questo codice nel file functions.php del tema ed è apparso il menu Testimonianze wp-admin e ora posso creare nuove testimonianze (proprio come nel metodo del plugin sopra).
Puoi anche impostare un'icona diversa per il tuo tipo di post personalizzato, che verrà visualizzata nel menu wp-admin. Devi solo aggiungere questa riga nell'array $args: 'menu_icon' => 'dashicons-businessman'
. Puoi trovare un elenco di tutte le icone possibili qui: Dashicon di WordPress. (Grazie ad Alexander per questo suggerimento).
Diamo un'occhiata più da vicino al codice:
- L'intero processo di registrazione CPT è incapsulato nella funzione
custom_post_type_testimonial()
, che è agganciatainit
WP alla fine dello snippet con questa riga di codice:add_action( 'init', 'custom_post_type_testimonials' );
. Questa chiamataadd_action
è la chiamata finale che mette tutto in moto e fa in modo che WordPress faccia la sua magia. - Il primo blocco di codice all'interno della funzione è un array di dati chiamato
$labels
, che contiene le stringhe di traduzione per questo tipo di post personalizzato. - Il secondo blocco è un array di argomenti utilizzati per la registrazione CPT, qui puoi definire tutte le impostazioni per il CPT. Quali campi dovrebbe supportare il CPT, se fosse pubblicamente visibile, la posizione del menu wp-admin, se avesse una pagina di archivio e così via. Per vedere il set completo di opzioni, visita questa pagina del codice WP.
- La riga finale della funzione è
register_post_type( 'testimonials', $args );
. Questo registrerà il tipo di post personalizzato "testimonial" con le impostazioni che abbiamo specificato in$args
sopra.
Questo è tutto! Abbiamo registrato un tipo di post personalizzato con un po' di codice PHP.
L'unico miglioramento che cambierei nel codice generato sarebbe quello di utilizzare le funzioni di internazionalizzazione di escape. Quindi, invece di _x()
e __()
esc_html_x()
e esc_html__()
. È sempre utile evitare i valori di output, anche le stringhe di traduzione, ma questo è un argomento per un altro post sul blog.
Articolo successivo della serie: Come creare una tassonomia personalizzata.