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ă!)
Pentru a finaliza acest tutorial, veți avea nevoie de:
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.
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!
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țitermenul $
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ă utilizezeanimal_cat
termen, nuhabitat
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:
- 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.
- Î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 extrapentru fiecare()
declarație în interiorul dvs. existentpentru 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?