Crea manualmente tipi di post personalizzati per WordPress

Pubblicato: 2020-12-15

Nel nostro primo articolo sui tipi di post personalizzati di WordPress abbiamo spiegato come creare facilmente i tuoi tipi di post personalizzati utilizzando l'eccellente interfaccia utente del tipo di post personalizzato del plug-in. In questo secondo articolo vedremo come puoi farlo manualmente (ad esempio codificando). Quindi, perché se è così facile creare un tipo di post personalizzato utilizzando un plug-in, vorresti farlo a lungo?

L'utilizzo di un plug-in per aggiungere funzionalità personalizzate può funzionare molto bene (e la vasta libreria di plug-in che aiutano a estendere le funzionalità è uno dei motivi per cui WordPress è così popolare). Tuttavia, possono sorgere problemi se e quando un plug-in non è supportato (poiché l'autore del plug-in sceglie di non continuare ad aggiornarlo e svilupparlo). Se ciò accade, potresti scoprire che la funzionalità fornita dal plug-in ora non funziona più, il che potrebbe essere un problema serio se il tuo sito Web è costruito attorno a una particolare funzionalità fornita da un plug-in.

Pertanto, se puoi codificare direttamente le funzionalità anziché fare affidamento su un plug-in, è una buona opzione da considerare.

Oggi ti illustreremo come creare il tuo tipo di post personalizzato senza utilizzare un plug-in. Dimostreremo anche alcune configurazioni di base come la definizione delle etichette CPT (Custom Post Type) insieme a cose come l'abilitazione di immagini in primo piano e altro ancora. Aggiungeremo quindi una tassonomia personalizzata e infine vedremo come puoi visualizzare il contenuto del tipo di post personalizzato nel frontend del tuo sito web.

Crea il tipo di post personalizzato

Se hai seguito il nostro tutorial precedente e hai ancora installato il plug-in dell'interfaccia utente CPT, disattivalo in modo che non si crei confusione durante la creazione manuale del tuo nuovo CPT.

Come in precedenza, utilizzeremo le ricette come focus per il nostro nuovo tipo di post personalizzato. Per iniziare la prima cosa che dobbiamo fare è creare il tipo di post personalizzato inserendo il codice corretto nel nostro file functions.php .

Configurazione di base

Per ora, creeremo i nostri tipi di post con argomenti minimi utilizzando la funzione register_post_type fornita da WordPress.

 register_post_type( string $post_type, array|string $args = array() )

La struttura di questa funzione richiede due parametri. La chiave del tipo di post che deve contenere solo caratteri alfanumerici minuscoli, trattini e trattini bassi e un secondo parametro facoltativo, $args per argomenti aggiuntivi. Ci concentreremo solo su alcuni di questi argomenti in questo articolo ma se vuoi sperimentare ancora un po' puoi trovare l'elenco completo degli argomenti disponibili nella relativa documentazione di WordPress.

Ai fini di questo articolo useremo il codice qui sotto.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

Se stai seguendo, avvia il tuo editor di testo preferito e aggiungi questo codice al tuo file functions.php .

Vedrai in questo codice che abbiamo usato l'array 'labels' per definire i nomi singolari e plurali per il nostro tipo di post, l'argomento show_in_rest per attivare l'editor Gutenberg per i post delle ricette e l'argomento public .

L'argomento public in realtà fa tre cose diverse. Mostra il menu dei post personalizzati dell'amministratore, include il menu dei post personalizzati nei risultati della ricerca sul sito Web e mostra anche il menu dei post personalizzati nell'area del menu di amministrazione di WordPress. Queste opzioni possono essere modificate separatamente utilizzando rispettivamente gli argomenti show_in_nav_menus , exclude_from_search e show_ui . Il valore predefinito show_in_nav_menus e show_ui eredita il valore public , ma il valore predefinito exclude_from_search è l'opposto del valore public .

Abbiamo anche utilizzato l'argomento Supports che definisce quali funzionalità supports un post personalizzato. Per ora abiliteremo solo 'titolo', 'editor' e 'miniatura' (alcune ulteriori opzioni verranno mostrate nei prossimi articoli).

Con questo frammento di codice aggiunto al nostro file functions.php e salvato (esegui sempre il backup del tuo sito Web prima di intraprendere lavori come questo!) ora vedrai una voce di menu nuova di zecca nell'amministratore di WordPress (in questo caso "Ricette").

Successivamente, se andiamo su Aspetto > Menu, possiamo confermare che le ricette sono state aggiunte come opzione. Questo conferma che le cose stanno funzionando come dovrebbero.

Nota: se vai nell'area del menu e non vedi la voce di menu "Ricette", è possibile che non sia stato selezionato nelle Opzioni dello schermo. Per fare ciò, vai in cima alla pagina e apri la barra delle opzioni dello schermo e assicurati che il tuo nuovo tipo di post personalizzato (Ricette in questo esempio) sia stato spuntato.

Aggiungi la tua tassonomia per il tuo tipo di post personalizzato

Esistono tassonomie di WordPress per raggruppare contenuti simili. A questo punto abbiamo i nostri post personalizzati 'ricette' ma non abbiamo la possibilità di categorizzarli nel modo che vogliamo. Pertanto sarebbe utile creare una categoria separata per le nostre ricette. Raggruppiamo ad esempio le ricette in base al tipo di cucina a cui appartengono.

Per raggiungere questo obiettivo è necessario registrare una nuova tassonomia "cucine" e quindi collegarla al tipo di post "ricette".

Per aggiungere la tassonomia utilizziamo la funzione register_taxonomy() fornita da WordPress (vedi un elenco di argomenti qui).

 register_taxonomy( string $taxonomy, $object_type, $args )

Gli argomenti obbligatori sono $taxonomy , che è la chiave della tassonomia, e $object_type , che è il tipo di oggetto o l'array di tipi di oggetto a cui la tassonomia dovrebbe essere associata, nel nostro caso 'ricette'. Nel parametro $arg includeremo anche i valori necessari per etichettare le nostre istanze di amministrazione della nostra tassonomia.

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

Il booleano show_admin_column definisce se la tassonomia sarà visibile o meno come una colonna nella tabella dell'elenco degli amministratori delle ricette.

Ora, se torni al tuo amministratore di WordPress e lo aggiorni, dovresti vedere la tassonomia "Cucine" nel menu Ricette.

Dovresti anche vedere una colonna "Cucine" nella tabella Ricette:

Visualizzazione del contenuto del tipo di post personalizzato sul frontend

A questo punto dovresti essere in grado di includere i tuoi post personalizzati nel tuo menu così come le tassonomie personalizzate che hai creato. Per dimostrarlo abbiamo aggiunto due cucine "Mediterranea" e "Messicana" nel nostro menu Tassonomia delle cucine. Queste vengono quindi visualizzate come opzioni di menu nel nostro menu WordPress, consentendoci di creare un menu Ricette come quello mostrato di seguito.

Se hai creato un post di Ricetta e lo hai associato a una categoria Cucina, ora dovresti vederli apparire quando selezioni la cucina associata dal menu.

Nota: se provi a visualizzare un post di una ricetta nel front-end potresti ricevere un "404 non trovato". Questo può accadere perché la cache di Permalink deve essere svuotata. È facile da fare. Vai su Impostazioni > Permalink e salva di nuovo.

Ora creeremo un'altra voce di menu per 'Tutte le ricette' utilizzando il codice personalizzato per visualizzare un archivio di tutte le nostre ricette.

Prima di procedere, però, dovremmo assicurarci che il nostro argomento di archivio dei post personalizzati sia impostato su true. Torna al tuo codice in functions.php dove registri il tipo di ricette e aggiungi 'has_archive' => true, nell'array degli argomenti.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

Successivamente, vai su Impostazioni> Permalink e salva di nuovo per assicurarti di non ricevere un errore 404 (come accennato in precedenza).

Ora nella pagina di costruzione del menu, aggiungi il collegamento personalizzato per la pagina degli archivi. Il testo del collegamento potrebbe essere "Tutte le ricette".

L'URL dovrebbe essere “/?post_type=recipes”, se i tuoi permalink sono impostati su “Semplice” e '/recipes/' se i permalink sono impostati su “Post name”.

Aggiungi la voce di menu e vai al tuo sito Web e fai clic sul relativo collegamento. Ora dovresti vedere tutti i post delle ricette in una vista archivio.

Ulteriori letture

  • Crea tipi di post personalizzati WordPress utilizzando un plug-in
  • Tipi di post personalizzati di WordPress: andare oltre
  • Crea tipi di post personalizzati per WordPress usando il tuo plugin!

Conclusione

Il modo di affrontare i tipi di post personalizzati che abbiamo esaminato in questo articolo può sembrare inizialmente confuso (soprattutto se confrontato con la facilità di creare tipi di post personalizzati utilizzando un plug-in). Se sei disposto a perseverare, tuttavia, codificare i tuoi tipi di post personalizzati ha i suoi vantaggi: non fai affidamento su un plug-in se quel plug-in dovesse smettere di funzionare o non essere supportato.