Implicit, WordPress creează arhive care prezintă toate postările în ordine inversă. Dacă utilizatorii caută postări dintr-o anumită categorie sau cu un anumit termen de taxonomie, aceștia vor trebui să acceseze pagina de arhivă pentru acea categorie sau termen.
Dar dacă doriți să creați arhiva principală pentru un post mai prietenos cu utilizatorul? În acest tutorial, vă vom arăta cum să creați o pagină de arhivă pentru un tip de post personalizat, care afișează postări din tipul postat clasificate în funcție de o taxonomie, astfel încât, în loc de o listă lungă, vizitatorii să vadă o listă pentru fiecare termen de taxonomie.
Pentru a urma acest tutorial veți avea nevoie de o instalare de dezvoltare a programului WordPress și a unui editor de coduri. Veți crea o temă care este o temă copilărească de douăzeci și unu de ani, deci veți avea nevoie de instalarea acesteia (care ar trebui să fie implicită).
Nu vă voi arăta cum să creați o temă pentru copii, dar dacă sunteți blocați, trebuie doar să aruncați o privire la foaia de stil din pachetul de cod pentru acest tutorial.
Din experiența mea, această tehnică este cea mai frecvent necesară pentru tipurile personalizate de posturi și taxonomii, nu pentru posturile și categoriile normale sau etichetele, așa că încep prin înregistrarea unui tip de post și a taxonomiei.
Notă: utilizez același tip de post de tip "animal" pe care l-am înregistrat într-un tutorial anterior despre crearea unei arhive bazate pe imagini. Dacă doriți să împingeți lucrurile un pic mai departe, puteți combina tehnica din acel tutorial cu cea pe care o vă aflu aici și afișați listele dvs. de termeni de taxonomie cu imaginile prezentate.
În fișierul funcțiilor temei, adăugați următorul cod pentru a înregistra tipul postului:
// înregistrați un tip de post particularizat numit "animale" funcția wptp_create_post_type () $ labels = array ('nume' => __ ('Animals'), 'singular_name' => __ ("Animal nou"), "add_new_item" => __ ("Adăugați animal nou"), "edit_item" => '=> __ ("Nu au fost găsite animale"), "not_found_in_trash" => __ ("Nu s-au găsit animale în 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, adăugați codul pentru a înregistra taxonomia:
// înregistrează o taxonomie numită "Animal Family" funcția wptp_register_taxonomy () register_taxonomy ('animal_cat', 'animal', array ('labels' => Familii de animale "," search_items "=>" Familii de căutare pentru animale ", 'all_items' => 'Toate familiile animale', 'edit_item' => 'Edit_ Animal_family', 'update_item' => '=>' Adăugați o nouă familie de animale ',' new_item_name '=>' Noua familie de nume de familie ',' nume_menu '=>' Familia animalelor '),' hierarchical '=> true,' sort '=> true, '=> array (' orderby '=>' term_order '),' rewrite '=> array (' slug '=>' animal-family '),' show_admin_column '=> true)); add_action ('init', 'wptp_register_taxonomy');
Odată ce ați făcut acest lucru, adăugați câteva date. Mai jos puteți vedea datele pe care le-am adăugat cu niște termeni de taxonomie aplicați. Nu fac nicio pretenție pentru exactitatea terminologiei mele în ceea ce privește familiile de animale, prin urmare, vă rugăm să nu comenta dacă am greșit acest lucru!
Următorul pas este să creați un șablon de arhivă pentru noul tip de postare. În tema dvs., creați un nou fișier numit Arhiva-animal.php
.
Deoarece această temă este o temă copilărească de douăzeci și opt de ani, șablonul de arhivă va avea nevoie de cod copiat din tema respectivă ca un înveliș pentru bucla personalizată pe care o veți crea. Așadar, adăugați următoarele în șablonul de arhivă:
Notă: dacă lucrați cu propria temă, copiați codul de împachetare din indexul sau fișierul de arhivă al temei proprii.
3. Populația șablonului de arhivă: Obținerea termenilor de taxonomie
Pentru ca arhiva dvs. să poată afișa animale după termenul de taxonomie, următorul pas este să aducem acești termeni.
În noul fișier de șablon, sub închiderea
(sau sub partea de deschidere a codului de împachetare dacă utilizați propria temă), preluați termenii utilizând
get_terms ()
:'count', 'hide_empty' => 0)); ?>Rețineți că am folosit doi parametri aici:
orderby
- aceasta vă permite să specificați ordinea termenilor afișați. Am folosit-o numara
ca valoare, astfel încât termenul cu cele mai multe posturi care îi sunt atribuite să fie afișat în primul rând, dar puteți comanda după nume sau ID - dacă lăsați acest lucru gol, WordPress va ordona după nume. Vedeți pagina Codex pe get_terms ()
pentru mai multe detalii.hide_empty
- acest lucru îi spune lui WordPress să nu primească termeni fără posturi care le-au fost atribuite. Aceasta vă salvează să verificați dacă interogarea are postări mai târziu.După ce ați făcut acest lucru, veți folosi pentru fiecare()
pentru a le spune WordPress să treacă prin fiecare dintre acești termeni și să ruleze o interogare pe care trebuie să o definiți. Sub codul pe care tocmai l-ați adăugat, introduceți următoarele:
'animal', 'animal_cat' => $ term-> slug); $ query = noua valoare WP_Query ($ args);
Acest lucru spune WordPress să ruleze prin fiecare termen și apoi definește interogarea pe care trebuie să o execute de fiecare dată. Argumentele pentru interogare includ tipul postului și termenul din 'Animal_cat'
taxonomie, care este valoarea lui termenul $
variabil.
După ce ați definit interogarea, trebuie să adăugați o buclă. Mai întâi, trimiteți numele cuvântului căutat ca titlu. Sub linia de început $ interogare
dar în interiorul bretelelor pentru fiecare
declarație, adăugați această linie:
ecou'". $ term-> nume. '
„;
Apoi, adăugați codul pentru a conține postările într-o listă:
// scoateți titlurile postului într-o listă de ecou '
În interiorul listei, adăugați acum bucla:
// Porniți buclă în timp ce ($ query-> have_posts ()): $ query-> the_post (); ?>
După cum puteți vedea, aceasta este o buclă simplă care scoate titlul fiecărui post într-un link către post și nu transmite conținut. Dacă doriți să adăugați un extras sau o imagine prezentată aici.
În cele din urmă, resetați interogarea utilizând wp_reset_postdata ()
sub linia de lectură echo "„;
Aceasta va fi acum interogarea și buclă dvs.:
'animal', 'animal_cat' => $ term-> slug); $ query = noua valoare WP_Query ($ args); // scoateți numele termenului într-un tag echo '". $ term-> nume. '
„; // scoateți titlurile postului într-o listă de ecou '
În cele din urmă, salvați fișierul șablon și vizualizați arhiva tipului de postare. Veți vedea că listează postările dvs. după termenul de taxonomie, mai degrabă decât într-o singură listă lungă.
Această tehnică este utilă atunci când doriți ca vizitatorii să poată vedea rapid datele clasificate fără a fi necesar să se uite la o gamă largă de pagini de arhivă - toate acestea se unesc într-un singur loc, dar sunt sortate pentru comoditate. Iată câteva idei despre cum ați putea adapta tehnica și o puteți lua mai departe:
get_categories ()
sau get_tags ()
.index.php
fișier pentru a afișa postările după categorii, etichete sau termeni de taxonomie.posts_per_page
și ofset
în argumentele dvs. de interogare pentru a face acest lucru - a se vedea detalii despre cum funcționează această pagină pe pagina Codex WP_Query.posts_per_page
pentru a limita numărul de postări afișate astfel încât fiecare listă să aibă aceeași lungime. Puteți combina acest lucru cu stilul pentru a afișa liste alăturate.get_term_link ()
pentru a face acest lucru.