Archivi di tassonomia elenca i post secondo i termini di una seconda tassonomia

Cosa starai creando

Se il tuo sito utilizza più tassonomie per categorizzare le informazioni, può essere utile suddividere i post in un archivio di tassonomia secondo i termini di una seconda tassonomia. 

In questo tutorial ti mostrerò come creare un archivio di tassonomia per fare proprio questo.

Se hai mai lavorato con database multi-relazionali, saprai che una delle loro grandi caratteristiche è il modo in cui puoi visualizzare i dati in base a più tassonomie. Ad esempio, se hai un database di clienti, puoi facilmente vedere quali clienti ti hanno assunto per diverse categorie di progetti, e poi ordinare ulteriormente, vedendo quali client di web design sono, per esempio, in una data posizione.

Quando ho iniziato a lavorare con WordPress ho trovato frustrante non poterlo fare facilmente, almeno non puoi farlo con un'installazione WordPress pronta all'uso che esegue il tema predefinito.

Tuttavia, è possibile classificare i dati in base a più di una tassonomia. In questo tutorial. Ti mostrerò come creare una pagina di tassonomia per elencare i post in quella tassonomia, ordinati in base ai termini di un'altra tassonomia che si applicano anche a loro. 

Creerò quindi un secondo archivio di tassonomia per la seconda tassonomia, che elenca i suoi post in base ai termini della prima tassonomia (credetemi - avrà più senso quando lo vedrete accadere!)

Cosa ti serve

Per completare questo tutorial avrai bisogno di:

  • un'installazione di sviluppo di WordPress
  • un editor di codice

1. Creazione del tema

Per questo tutorial, creerò un tema figlio di twentyfourteen con due nuovi file modello, un foglio di stile e un file di funzioni. Se stai lavorando con il tuo tema, copia il codice dal mio file delle funzioni nel file delle funzioni del tema e aggiungi i file del modello con le modifiche per riflettere il markup del tema.

Per creare il mio tema, creo un file chiamato style.css nella mia cartella tema vuota e popolarlo con il seguente:

/ * Nome tema: WPTutsPlus Crea un archivio di tassonomia per elencare i post secondo l'URI del tema di una seconda tassonomia: http://rachelmccollin.co.uk/wptutsplus-taxonomy-archive-list-by-second-taxonomy/ Descrizione: Tema da supportare Esercitazione su WPTutsPlus sulla creazione di un archivio di tassonomia personalizzato. Tema infantile per il tema Twenty Fourteen. Autore: Rachel McCollin Autore URI: http://rachelmccollin.co.uk/ Template: twentyfourteen Versione: 1.0 * / @import url ("... /twentyfourteen/style.css");

Questo crea il tema del mio bambino.

2. Registrazione del tipo di posta e tassonomie

Per questo tutorial ho intenzione di usare lo stesso 'animali' tipo di posta e 'Animal_cat' tassonomia che ho usato nel mio tutorial sulla creazione di un modello di tipo di post personalizzato. Aggiungerò anche una seconda tassonomia chiamata 'habitat'.

Per fare questo, creo un nuovo file chiamato functions.php. Innanzitutto, aggiungo la funzione per registrare il mio tipo di post:

 __ ('Animali'), 'singular_name' => __ ('animale'), 'add_new' => __ ('Nuovo animale'), 'add_new_item' => __ ('Aggiungi nuovo animale'), 'edit_item' = > __ ('Modifica animale'), 'new_item' => __ ('Nuovo animale'), 'view_item' => __ ('Visualizza animale'), 'search_items' => __ ('Cerca animali'), 'not_found '=> __ (' Nessun animale trovato '),' not_found_in_trash '=> __ (' Nessun animale trovato nel Cestino '),); $ args = array ('labels' => $ labels, 'has_archive' => true, 'public' => true, 'hierarchical' => false, 'supports' => array ('title', 'editor', '' estratto "," campi personalizzati "," miniatura "," attributi della pagina ")," tassonomie "=> matrice (" post_tag "," categoria "),); register_post_type ('animal', $ args);  add_action ('init', 'wptp_create_post_type'); ?>

E poi registro le mie due tassonomie in un'unica funzione:

 array ('name' => 'Animal Families', 'singular_name' => 'Animal Family', 'search_items' => 'Cerca famiglie di animali', 'all_items' => 'Tutte le famiglie di animali', 'edit_item' => ' Modifica famiglie di animali ',' update_item '=>' Aggiorna famiglia di animali ',' add_new_item '=>' Aggiungi nuova famiglia di animali ',' new_item_name '=>' Nuovo nome di famiglia di animali ',' menu_name '=>' Famiglia di animali ', ), 'hierarchical' => true, 'sort' => true, 'args' => array ('orderby' => 'term_order'), 'rewrite' => array ('slug' => 'animal-family' ), 'show_admin_column' => true)); // registra una tassonomia chiamata 'Habitat' register_taxonomy ('habitat', 'animal', array ('labels' => array ('name' => 'Habitat', 'singular_name' => 'Habitat', 'search_items' = > 'Search Habitats', 'all_items' => 'All Habitats', 'edit_item' => 'Modifica Habitat', 'update_item' => 'Aggiorna Habitat', 'add_new_item' => 'Aggiungi Nuovo Habitat', 'new_item_name' => 'New Habitat Name', 'menu_name' => 'Habitat',), 'hierarchical' => true, 'sort' => true, 'args' => array ('orderby' => 'term_order'), 'show_admin_column' => true));  add_action ('init', 'wptp_register_taxonomies'); ?>

Questo crea il 'animale' tipo di post e le due tassonomie che si applicano ad esso. Nota che ho usato 'Show_admin_column' rendere la vita un po 'più facile quando si amministrano i miei post.

Dopo aver aggiunto alcuni dati e classificato gli animali in base alle mie tassonomie, ora posso visualizzare i miei dati nella dashboard di WordPress, come mostrato di seguito.

Nota: la mia classificazione degli animali che ho usato non è molto scientifica - per favore non commentare sulla mia comprensione degli habitat o delle famiglie!

3. Creazione del primo file modello di tassonomia

Il prossimo passo è creare un file modello per il 'Animal_cat' archivio di tassonomia. Crea un file nella cartella del tema e chiamalo tassonomia-animal_cat.php. Ora aggiungi il codice wrapper dal tema (l'ho copiato dal tema principale, il tuo sarà diverso se stai utilizzando il tuo tema):

  

A questo file di modello ora devono essere aggiunti alcuni dati.

Identificazione del termine interrogato corrente

Il modello di archivio utilizzerà WP_Query per creare una query personalizzata per ogni termine. Uno degli oggetti interrogati sarà il termine di tassonomia corrente visualizzato, quindi è necessario identificarlo e memorizzarlo come variabile.

Sotto il get_header () linea, aggiungere:

Puoi quindi usarlo $ animalcat variabile più tardi.

Emissione di un titolo di pagina

L'archivio non ha attualmente un'intestazione principale, quindi è necessario aggiungerne uno utilizzando la variabile appena definita.

Dopo l'apertura

tag, aggiungi il seguente:

 

nome; ?>

Recupero dei termini per la seconda tassonomia

Successivamente è necessario recuperare l'elenco dei termini per la seconda tassonomia. Sotto il codice che hai appena aggiunto, inserisci questo:

 0)); ?>

Questo recupererà un elenco di tutti i termini e lo memorizzerà in un array. Usando 'Hide_empty' puoi evitare che vengano visualizzati tutti i termini vuoti, ma come vedrai tra poco, ciò impedisce solo i termini interrogati che non hanno alcun post, non quelli che non hanno post con il termine di tassonomia attualmente interrogato.

Creazione del ciclo

Ora crea un ciclo che verrà eseguito per ciascuno dei termini:

 'animal', 'animal_cat' => $ animalcat-> slug, 'habitat' => $ term-> slug); $ query = new WP_Query ($ args); // mostra il nome del termine in un tag di intestazione echo '

'. $ term-> nome. ' habitat

'; // emette i titoli dei post in una lista echo '
    '; // Avvia il ciclo while ($ query-> have_posts ()): $ query-> the_post (); ?>
  • ">
  • '; // usa reset postdata per ripristinare la query originale wp_reset_postdata (); ?>

Alcune note su questo:

  • Per ogni termine, viene definita una nuova query.
  • Gli argomenti per la query includono il termine nella seconda tassonomia ($ termine) e il termine attualmente in fase di interrogazione ($ animalcat).
  • Se le tue tassonomie si applicano solo a un tipo di post, potresti omettere il 'Post_type' argomento ma preferisco includerlo per ogni evenienza.
  • Il $ termine variabile viene utilizzata per generare un titolo per ogni sezione usando $ TERM-> nome.

Ora salva il tuo file modello e dai uno sguardo all'archivio della tassonomia per uno dei tuoi Famiglia di animali termini:

Aggiunta di un controllo per i post di ogni query

Al momento, come puoi vedere, il modello sta emettendo liste vuote. Questo è facilmente risolto controllando se ogni query ha post.

Avvolgi quanto segue attorno al tuo loop:

if ($ query-> have_posts ()) 

Il tuo loop ora sarà simile a questo:

if ($ query-> have_posts ()) // mostra il nome del termine in un tag di intestazione echo '

'. $ term-> nome. ' habitat

'; // emette i titoli dei post in una lista echo '
    '; // Avvia il ciclo while ($ query-> have_posts ()): $ query-> the_post (); ?>
  • ">
  • ';

Ciò impedisce a WordPress di eseguire il ciclo se la query non ha post, rimuovendo quelle intestazioni vuote. Ora la mia pagina di archivio assomiglia a questo:

Molto meglio!

Creazione del file modello per la seconda tassonomia

Il passaggio finale è creare un file modello per gli archivi della seconda tassonomia.

Copia il tuo primo file di modello e rinominalo tassonomia-habitat.php. Modificalo in modo che la terminologia sia corretta. Le modifiche che devo apportare al mio file sono:

  • correggendo i commenti nella parte superiore del file in modo che siano precisi
  • cambiando il nome del $ animalcat variabile a $ habitat (puoi evitare questo problema dando alla variabile un nome più generico, ma non chiamarlo $ termine come lo stai usando altrove)
  • modificare il

    intestazione in modo che usi il $ habitat variabile per emettere il nome del termine interrogato corrente (ho anche aggiunto del testo esplicativo qui che è opzionale)

  • cambiando il primo parametro del get_terms ()funzione quindi usa il animal_cat termine, non il habitat termine.
  • modificare gli argomenti della query, scambiando essenzialmente i valori per 'Animal_cat' e 'habitat'.
  • modificare il

    contenuto nel ciclo per riferirsi a famiglie non habitat.

Ciò significa che il mio nuovo file modello ha il seguente aspetto:

   

Habitat - nome; ?>

0)); ?> 'animal', 'animal_cat' => $ term-> slug, 'habitat' => $ habitat-> slug); $ query = new WP_Query ($ args); if ($ query-> have_posts ()) // mostra il nome del termine in un tag di intestazione echo '

'. $ term-> nome. ' famiglia

'; // emette i titoli dei post in una lista echo '
    '; // Avvia il ciclo while ($ query-> have_posts ()): $ query-> the_post (); ?>
  • ">
  • '; // usa reset postdata per ripristinare la query originale wp_reset_postdata (); ?>

Dopo aver apportato tali modifiche, salva il nuovo file modello e controlla uno dei tuoi archivi:

Ora hai una pagina per la seconda tassonomia che funziona allo stesso modo della prima.

Sommario

In questo tutorial, hai imparato un modo di visualizzare i dati usando più tassonomie. Potresti continuare a farlo lavorando con una terza tassonomia, in due modi:

  1. Ripeti il ​​processo di recupero dei termini, definendo una query ed eseguendo il ciclo per il terzo termine dopo il secondo termine, in modo da avere due elenchi separati.
  2. Unisci i tuoi dati utilizzando tutti e tre i termini, utilizzando ciascuno di essi $ termine variabile in modo simile al $ habitat o $ animalcat variabile e aggiungendo un extra per ciascuno() dichiarazione all'interno del tuo esistente per ciascuno() dichiarazione. Dovresti quindi pensare a come disporre i dati risultanti usando liste o una griglia.

Perché non provarci?