Arhivele taxonomice Listați postările de către alți termeni ai taxonomiei

Ce veți crea

Dacă site-ul dvs. folosește mai multe taxonomii pentru a clasifica informațiile, poate fi util să împărțiți posturile dintr-o arhivă de taxonomie cu termenii unei a doua taxonomii. 

În acest tutorial vă voi arăta cum să creați o arhivă de taxonomie pentru a face exact acest lucru.

Dacă ați lucrat vreodată cu baze de date multi-relaționale, veți ști că una dintre caracteristicile lor minunate este modul în care puteți vizualiza datele în funcție de mai multe taxonomii. De exemplu, dacă aveți o bază de date a clienților, puteți vedea cu ușurință care sunt clienții care v-au angajat pentru diferite categorii de proiecte și apoi sortați mai departe, văzând care sunt clienții web design-ului, de exemplu, într-o anumită locație.

Când am început să lucrez cu WordPress, mi-a fost frustrant că nu ai putut să faci asta cu ușurință - cel puțin nu poți să o faci cu o instalare WordPress în afara casetei care rulează tema implicită.

Cu toate acestea, este posibil să vă clasificați datele cu mai mult de o taxonomie. În acest tutorial. Vă voi arăta cum să creați o pagină de taxonomie pentru a lista postările din taxonomia respectivă, ordonată de termenii unei alte taxonomii care se aplică și ei. 

Apoi voi crea oa doua arhivă de taxonomie pentru cea de-a doua taxonomie, care își enumeră posturile în ordinea termenilor primului taxonomie (credeți-mă - va fi mai logic când veți vedea că se întâmplă!)

Ce ai nevoie

Pentru a finaliza acest tutorial, veți avea nevoie de:

  • o instalare de dezvoltare a WordPress
  • un editor de cod

1. Crearea temei

Pentru acest tutorial, voi crea o temă copilărească de douăzeci și unu cu două fișiere de șabloane noi, o foaie de stil și un fișier de funcții. Dacă lucrați cu propria temă, copiați codul din fișierul de funcții în fișierul funcțiilor temei și adăugați fișierele șablon cu trucuri pentru a reflecta marcajul temei.

Pentru a crea tema mea, creez un fișier numit style.css în dosarul meu de temă goală și îl populați cu următoarele:

/ * Nume temă: WPTutsPlus Creați o arhivă de taxonomie pentru a afișa postările de către un termen al secundar al unei taxonomii URI: http://rachelmccollin.co.uk/wptutsplus-taxonomy-archive-list-by-second-taxonomy/ Descriere: Tema de suport Tutorial WPTutsPlus privind crearea unei arhive taxonomice personalizate. Tema copilului pentru tema Twenty Thirteen. Autor: Rachel McCollin Autor URI: http://rachelmccollin.co.uk/ Format: twentyfourteen Versiune: 1.0 * / @import url ("... /twentyfourteen/style.css");

Aceasta creează tema copilului meu.

2. Înregistrarea tipului de post și a taxonomiilor

Pentru acest tutorial o să folosesc același lucru „animale“ post și tip 'Animal_cat' taxonomia pe care am folosit-o în tutorialul meu pentru crearea unui șablon personalizat tip post. Voi adăuga și o a doua taxonomie numită 'Habitat'.

Pentru a face acest lucru, creez un nou fișier numit functions.php. Mai întâi, adaug funcția pentru a înregistra tipul postului meu:

 __ ('Animale'), 'singular_name' => __ ('animal'), 'add_new' => __ ('Animal nou'), 'add_new_item' => > __ ("Animale de căutare"), "new_item" => __ ("Animale noi"), "view_item" '=> __ ("Nu s-au găsit animale"), "not_found_in_trash" => __ ("Nu s-au găsit animale în coșul de gunoi"),); $ arge = array ('etichete' => etichete $, 'has_archive' => true, 'public' => true, 'hierarchical' => false, extras ',' custom-fields ',' thumbnail ',' page-attributes '),' taxonomies '=> array (' post_tag ',' category ');); register_post_type ('animal', $ args);  add_action ('init', 'wptp_create_post_type'); ?>

Apoi înregistrez cele două taxonomii ale mele într-o singură funcție:

 array = 'Familii de animale', 'singular_name' => 'Familie de animale', 'search_items' => Editați familia animalelor "," update_item "=>" Actualizați familia animalelor "," add_new_item "=>" Adăugați o nouă familie de animale "," new_item_name "=> ) ',' hierarchical '=> true,' sort '=> true,' args '=> array (' orderby '=>'_order'), 'rewrite' ), 'show_admin_column' => true)); // înregistrează o taxonomie numită 'Habitat' register_taxonomy ('habitat', 'animal', array ('labels' => array ('name' => 'Habitat', 'search_items' = > 'Habitat de căutare', 'all_items' => 'Toate habitatele', 'edit_item' => 'Edit Habitat', 'update_item' = "True", "args" => array ('orderby' => 'nume_menu'), 'show_admin_column' => true));  add_action ('init', 'wptp_register_taxonomies'); ?>

Aceasta creează 'animal' tipul postului și cele două taxonomii care se aplică acestuia. Rețineți că am folosit 'Show_admin_column' pentru a face viața mai ușoară atunci când administrez posturile mele.

După adăugarea unor date și clasificarea animalelor în funcție de taxonomiile mele, acum văd datele mele în tabloul de bord WordPress, după cum se arată mai jos.

Notă: clasificarea mea a animalelor pe care le-am folosit nu este foarte științifică - vă rugăm să nu comentați înțelegerea mea despre habitate sau familii!

3. Crearea primului fișier Template Template

Următorul pas este să creați un fișier șablon pentru 'Animal_cat' arhivă de taxonomie. Creați un fișier în dosarul tematic și apelați-l taxonomie-animal_cat.php. Acum adăugați codul de wrapper de la tema dvs. (Am copiat acest lucru din tema părintelui, al tău va fi diferit dacă folosești propria temă):

  

Acest fișier de șablon trebuie să aibă acum unele date adăugate la acesta.

Identificarea termenului curent interogat

Șablonul de arhivă va fi utilizat WP_Query pentru a crea o interogare personalizată pentru fiecare termen. Unul dintre obiectele interogate va fi termenul curent de taxonomie afișat, deci trebuie să îl identificați și să îl stocați ca o variabilă.

Sub get_header () line, adăugați:

Apoi puteți folosi asta $ animalcat variabil mai târziu.

Rezultatul unei pagini

În prezent, arhiva nu are o rubrică principală, deci trebuie să adăugați una folosind variabila pe care tocmai ați definit-o.

După deschidere

tag, adăugați următoarele:

 

Nume; ?>

Obținerea termenilor pentru a doua taxonomie

În continuare, trebuie să aduceți lista termenilor pentru a doua taxonomie. Sub codul pe care tocmai l-ați adăugat, introduceți următoarele:

 0)); ?>

Aceasta va aduce o listă a tuturor termenilor și o va stoca într-o matrice. Prin utilizarea 'Hide_empty' puteți evita afișarea oricăror termeni goi - dar după cum veți vedea în scurt timp, acest lucru împiedică doar interogarea termenilor, care nu au nicio postare, nu cele care nu au postări cu termenul de taxonomie interogat în prezent.

Crearea buclă

Acum creați o buclă care va rula pentru fiecare dintre termeni:

 'animal', 'animal_cat' => $ animalcat-> slug, 'habitat' => $ term-> slug); $ query = noua valoare WP_Query ($ args); // scoateți numele termenului într-un tag echo '

". $ term-> nume. "habitat

„; // scoateți titlurile postului într-o listă de ecou '
    „; // Porniți buclă în timp ce ($ query-> have_posts ()): $ query-> the_post (); ?>
  • „>
  • „; // folosiți resetarea postdata pentru a restabili interogarea inițială wp_reset_postdata (); ?>

Câteva note despre acest lucru:

  • Pentru fiecare termen este definită o nouă interogare.
  • Argumentele pentru interogare includ termenul din a doua taxonomie (termenul $) și termenul în curs de interogare ($ animalcat).
  • Dacă taxonomiile dvs. se aplică numai pentru un singur post, puteți renunța la acesta 'Post_type' argument, dar prefer să-l includ doar în caz.
  • termenul $ variabila este folosită pentru a afișa un titlu pentru fiecare secțiune utilizând $ Term-> nume.

Acum, salvați fișierul șablonului și aruncați o privire la arhiva taxonomică pentru unul dintre dvs. Familia de animale termeni:

Adăugarea unui cec pentru mesaje la fiecare interogare

În momentul în care puteți vedea, șablonul emite liste goale. Acest lucru este ușor de stabilit prin verificarea dacă fiecare interogare are postări.

Înfășurați următoarele în jurul bucla:

dacă ($ query-> have_posts ()) 

Buclele dvs. vor arăta astfel:

dacă ($ interogare-> are_posts ()) // ieșire numele termenului într-un tag echo '

". $ term-> nume. "habitat

„; // scoateți titlurile postului într-o listă de ecou '
    „; // Porniți buclă în timp ce ($ query-> have_posts ()): $ query-> the_post (); ?>
  • „>
  • „;

Acest lucru împiedică WordPress să execute buclă dacă interogarea nu are nicio postare, eliminând acele poziții goale. Pagina mea de arhivă arată astfel:

Mult mai bine!

Crearea fișierului șablon pentru a doua taxonomie

Ultimul pas este de a crea un fișier de șablon pentru arhivele celei de-a doua taxonomii.

Copiați primul fișier de șablon și redenumiți-l taxonomie-habitat.php. Editați-o astfel încât terminologia să fie corectă. Modificările pe care trebuie să le fac în dosarul meu sunt:

  • ajustând comentariile din partea de sus a fișierului, astfel încât acestea să fie corecte
  • schimbarea numelui $ animalcat variabil la $ habitat (ați putea evita această problemă dând variabilei un nume mai generic - dar nu o numiți termenul $ pe măsură ce îl folosiți în altă parte)
  • editarea

    așa că folosește $ habitat variabilă pentru a afișa numele termenului curent interogat (de asemenea, am adăugat aici un text explicativ care este opțional)

  • schimbarea primului parametru al get_terms ()funcția, astfel încât să utilizeze animal_cat termen, nu habitat termen.
  • editând argumentele interogării, schimbând în esență valorile pentru 'Animal_cat' și 'Habitat'.
  • editarea

    conținutul în buclă pentru a se referi la familii care nu au habitate.

Aceasta înseamnă că noul meu fișier de șablon arată astfel:

   

habitat - Nume; ?>

0)); ?> 'animal', 'animal_cat' => $ term-> slug, 'habitat' => $ habitat-> slug); $ query = noua valoare WP_Query ($ args); dacă ($ interogare-> are_posts ()) // ieșire numele termenului într-un tag echo '

". $ term-> nume. ' familie

„; // scoateți titlurile postului într-o listă de ecou '
    „; // Porniți buclă în timp ce ($ query-> have_posts ()): $ query-> the_post (); ?>
  • „>
  • „; // utilizați resetarea postdata pentru a restabili interogarea inițială wp_reset_postdata (); ?>

După efectuarea acestor modificări, salvați noul fișier de șablon și verificați una dintre arhivele dvs.:

Acum aveți o pagină pentru a doua taxonomie care funcționează la fel ca prima.

rezumat

În acest tutorial, ați învățat o modalitate de afișare a datelor utilizând mai multe taxonomii. Ați putea lua acest lucru în continuare prin lucrul cu oa treia taxonomie, într-unul din două moduri:

  1. Repetați procesul de preluare a termenilor, definirea unei interogări și rularea buclă pentru al treilea termen după al doilea termen, astfel încât să aveți două liste separate.
  2. Îmbinați datele utilizând toți cei trei termeni, utilizând fiecare dintre ele termenul $ variabilă în mod similar cu $ habitat sau $ animalcat variabilă și adăugând o extra pentru fiecare() declarație în interiorul dvs. existent pentru fiecare() afirmație. Apoi, va trebui să vă gândiți cum să stabiliți datele rezultate utilizând liste sau grilă.

De ce să nu mergeți?

Cod