Come creare tassonomie personalizzate esclusive in WordPress

Pubblicato: 2022-03-11

WordPress, uno dei più potenti sistemi di blogging open source e di gestione dei contenuti, viene utilizzato per alimentare gran parte delle reti interweb. Fino a un quarto di tutti i siti Web esegue WordPress e non c'è carenza di domanda per i servizi di sviluppo di WordPress.

A differenza di molti altri CMS, WordPress è amato da molti per la sua flessibilità e personalizzazione. Le tassonomie, una delle funzionalità principali di WordPress, ti consentono di organizzare i contenuti nel modo che preferisci. Sebbene sia integrato con alcune tassonomie predefinite, WordPress ti consente di aggiungere tutte le tassonomie personalizzate che desideri.

Tuttavia, far sì che le tassonomie si comportino esattamente nel modo desiderato potrebbe richiedere di armeggiare con alcuni approcci non documentati.

Rappresentazione grafica delle varie opzioni di tassonomia di WordPress

In questo articolo imparerai come definire tassonomie personalizzate esclusive in WordPress che si comportano in modo molto più simile a categorie che a tag, consentendoti di classificare i tuoi post in modo molto più rigoroso di quanto tu possa fare fuori dagli schemi.

Che cos'è una tassonomia?

Secondo il codice di WordPress:

Una tassonomia è un modo per raggruppare le cose insieme.

Ad esempio, un mazzo di diversi tipi di frutta può essere raggruppato in base a varie caratteristiche e quindi a questi gruppi possono essere assegnati dei nomi.

In WordPress, le tassonomie vengono utilizzate per raggruppare post, pagine e persino tipi di post personalizzati in gruppi diversi.

I nomi per i diversi raggruppamenti in una tassonomia sono chiamati termini . Prendi i frutti, ad esempio, e come possono essere raggruppati in base ai loro colori. In questo caso, i nomi di colori diversi sarebbero i termini.

Per impostazione predefinita, WordPress è dotato di quattro tassonomie: categoria , tag , categoria link e formato post . Puoi saperne di più su queste tassonomie predefinite qui.

Tra queste tassonomie integrate, categorie e tag sono molto simili ma presentano una differenza importante: le categorie sono tassonomie esclusive (ad esempio, per ogni post, puoi selezionare al massimo una categoria) mentre a ogni post possono essere assegnati più tag.

Inoltre, le categorie sono generalmente predefinite, mentre i tag possono essere definiti man mano che procedi.

Definizione di tassonomie personalizzate

È possibile definire una tassonomia personalizzata utilizzando la funzione register_taxonomy() . Puoi saperne di più sulla funzione qui.

Per vedere come funziona questa funzione, definiamo una tassonomia personalizzata per i post con foto di paesaggi.

 function view_init() { register_taxonomy( 'view', 'post', array( 'label' => __( 'View' ), 'capabilities' => array( 'assign_terms' => 'edit_guides', 'edit_terms' => 'publish_guides' ) ) ); } add_action( 'init', 'view_init' );

Nello snippet sopra, stiamo definendo una nuova tassonomia per i post chiamata view .

Puoi pensare che questa tassonomia venga utilizzata per classificare le foto in base al tipo o alla natura delle viste presenti nelle foto (ad es. montagna, lago o foresta).

Come sempre, i post che appartengono a termini specifici di questa categoria appariranno in /view/{view_name} .

La riga delle capacità nello snippet sopra è facoltativa. Senza di essa, WordPress imposterà le funzionalità predefinite agli stessi utenti dei post. Come mostrato sopra, ciò consentirà a qualsiasi utente con la funzionalità "edit_guides" personalizzata di assegnare la tassonomia a un post e a qualsiasi utente con la funzionalità "publish_guides" personalizzata di creare nuovi elementi della tassonomia.

Secondo la documentazione ufficiale, sono quattro le capacità che possono essere definite:

Le funzionalità della tassonomia includono assignterms , editterms , manageterms (visualizza la tassonomia nella navigazione dell'amministratore) e deleteterms .

Come vengono utilizzate le tassonomie

All'interno del tuo codice, puoi usare la funzione wp_set_object_terms() per aggiungere termini agli oggetti usando la tassonomia. Puoi elencare i termini esistenti usando la funzione the_terms() . Inoltre, puoi utilizzare la funzione wp_tag_cloud() per generare una nuvola di termini per la tua tassonomia personalizzata. Puoi saperne di più su queste funzioni qui.

Sul lato dell'interfaccia utente, WordPress crea una nuova meta box sui post per ogni tassonomia. La meta box è simile alla meta box Tag che ti consente di collegare uno o più termini al tuo post. Questo è ciò che WordPress fa per impostazione predefinita, ed è ciò che possiamo cambiare rendendo esclusiva una tassonomia: fare in modo che la tassonomia personalizzata si comporti come la tassonomia di categoria.

Forzare l'esclusività sulle tassonomie

Quando creiamo una tassonomia personalizzata con il metodo register_taxonomy() , WordPress aggiunge una meta box con la selezione di più elementi alla pagina di modifica del post:

Utilizzando questa meta box, un utente può scegliere un numero qualsiasi di termini esistenti (già utilizzati) e può anche aggiungere nuovi termini utilizzando la casella di testo.

Per creare una tassonomia simile a una categoria, in cui ogni post appartiene al massimo a una categoria da un insieme di categorie predefinite, puoi farlo modificando leggermente WordPress:

  • Nascondi la meta box predefinita creata da WordPress.
  • Crea una meta box personalizzata nella pagina di post modifica che fornirà i controlli per la selezione di un singolo elemento.
  • Salva il valore della tassonomia quando il post viene salvato.

Diamo un'occhiata a ciascuno dei passaggi.

Nascondi la Meta Box predefinita creata da WordPress

Per questo, dobbiamo impostare le opzioni show_in_quick_edit e meta_box_cb su false quando chiamiamo register_taxonomy .

Screenshot di una meta box tassonomia personalizzata in cui è possibile aggiungere elementi all'insieme di termini disponibili

La prima opzione nasconde la tassonomia nel pannello di modifica rapida/in blocco e la seconda opzione la nasconde nella pagina di modifica del post:

 register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));

Quando la meta box predefinita è nascosta, gli elementi possono essere aggiunti all'insieme dei termini disponibili della tassonomia tramite la pagina di gestione della tassonomia:

Screenshot di una meta box denominata Custom Exclusive Taxonomy con diversi pulsanti di opzione

Crea una meta box personalizzata nella pagina di modifica del post

Per creare una meta box personalizzata, possiamo utilizzare l'hook add_meta_boxes di WordPress. Puoi saperne di più sul gancio qui.

 add_action('add_meta_boxes', 'add_custom_meta_box'); function add_custom_meta_box(){ add_meta_box( 'taxonomy_box', __('Custom Exclusive Taxonomy'), 'fill_custom_meta_box_content', 'post' ,'side'); }

Chiamiamo il metodo add_meta_box con i seguenti argomenti:

  • taxonomy_box – L'ID della meta box
  • __('Custom Exclusive Taxonomy') – Il titolo della meta box
  • fill_custom_meta_box_content – ​​Una funzione utilizzata per riempire il contenuto della meta box
  • post : indica che la meta box dovrebbe apparire nella pagina di modifica del post.
  • side – Indica il punto in cui inserire la meta box.

Nota come abbiamo specificato taxonomy_box come ID. Tuttavia, è la funzione nel terzo parametro che ci permetterà di definire cosa andrà nella casella.

Ora implementeremo la funzione fill_custom_meta_box_content :

 <?php function fill_custom_meta_box_content( $post ) { $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false // Retrieve all terms )); // We assume that there is a single category $currentTaxonomyValue = get_the_terms($post->ID, 'custom_taxonomy')[0]; ?> <p>Choose taxonomy value</p> <p> <?php foreach($terms as $term): ?> <input type="radio" name="custom_taxonomy" value="<?php echo $term->term_id;?>"<?php if($term->term_id==$currentTaxonomyValue->term_id) echo "checked"; ?>> <label for="taxonomy_term_<?php echo $term->term_id;?>"><?php echo $term->name; ?></label> </input><br/> <?php endforeach; ?> </p> <?php }

Qui, stiamo prima recuperando tutti i termini (cioè i valori esistenti) della tassonomia. Li useremo per mostrare un elenco di controlli dei pulsanti di opzione.

Successivamente, recuperiamo il termine della tassonomia attualmente selezionato utilizzando la funzione get_the_terms() : ne abbiamo bisogno per selezionare il rispettivo pulsante di opzione.

Si noti che questa funzione restituisce un array. Questo perché, per impostazione predefinita, al post può essere associato un numero qualsiasi di termini. Secondo la nostra ipotesi, il post ha al massimo un termine, quindi accediamo al primo elemento dell'array. (Va bene se l'array è vuoto; otterremo null come valore corrente e non verrà selezionato alcun pulsante di opzione.)

Il codice di emissione HTML utilizza custom_taxonomy come nome dei pulsanti di opzione e gli ID dei termini corrispondenti come valori; Gli attributi dell'ID del pulsante di opzione vengono utilizzati solo per la connessione ai tag dell'etichetta. Di conseguenza, otteniamo la seguente meta box personalizzata:

Screenshot della funzione "aggiungi nuovo tag" di Custom Exclusive Taxonomy ora disponibile nella barra laterale del dashboard di WordPress

Salva il valore della tassonomia quando il post viene salvato

Infine, dobbiamo mantenere il valore della tassonomia quando il post viene salvato. Per questo, possiamo usare l'hook save_post :

 add_action('save_post', 'save_custom_taxonomy'); function save_custom_taxonomy($post_id){ if ( isset( $_REQUEST['custom_taxonomy'] ) ) wp_set_object_terms($post_id, (int)sanitize_text_field( $_POST['custom_taxonomy'] ), 'custom_taxonomy'); }

E questo è tutto! Abbiamo chiuso.

Ora sai come definire una tassonomia personalizzata che si comporterà come la tassonomia di categoria incorporata.

Nota: WordPress ha accettato una richiesta di funzionalità per rendere più semplice l'attivazione dell'esclusività per le tassonomie personalizzate. Tuttavia, il biglietto non ha visto molta attività per un po'.

Incartare

Le tassonomie sono una funzionalità molto potente e utile in WordPress. Per impostazione predefinita, non hanno la capacità di effettuare una categorizzazione rigorosa dei post, ma come quasi tutto in WordPress, le tassonomie e le relative funzionalità sono estremamente personalizzabili. Questo ci permette di aggiungere questa capacità spesso necessaria in pochi passaggi.

L'approccio qui introdotto può essere utilizzato anche per creare un'interfaccia utente ancora più personalizzata nelle pagine di modifica dei post per la selezione dei termini della tassonomia.

Spero che tu abbia trovato utile questo breve tutorial sulla definizione di tassonomie personalizzate esclusive!