Personalizarea arhivelor wordpress pentru categorii, etichete și alte taxonomii, cms și motoare

În acest articol, vom vorbi despre taxonomii personalizate și cum să le creăm. Vom examina, de asemenea, ce fișiere template tematice WordPress sunt asociate cu arhive încorporate și taxonomii utilizatorilor, precum și unele metode avansate de configurare a arhivelor de taxonomie.







terminologie

Înainte de a continua, să examinăm termenii. Taxonomia WordPress este un tip de conținut utilizat în principal pentru organizarea oricărui alt tip de conținut.

Personalizarea arhivelor wordpress pentru categorii, etichete și alte taxonomii, cms și motoare

"Ierarhia șabloanelor WordPress"

Pentru aceasta, mai întâi trebuie să știm ce fișiere din tema noastră sunt folosite pentru a afișa arhiva. Temele diferite au fișiere șablon diferite, dar toate temele conțin un șablon index.php. Șablonul index.php este utilizat pentru a afișa întregul conținut al site-ului, cu excepția cazului în care există șablon de comandă mai mare în ierarhia șablonului.

Aici ar trebui să luați în considerare o nuanță - șablonul cu șmirghel înlocuiește ordinea cu ID-ul șablonului. Deci, în cazul în care eticheta cu "slug" avocado avea identificatorul 7, atunci eticheta șablon-avocado.php va fi preferată. dacă există, și nu tag-7.php.

Ordinea ierarhizării modelelor de taxonomie personalizată este puțin diferită de ordinea generală, deoarece pentru toate taxonomiile există șabloane separate pentru taxonomii specifice și pentru condițiile specifice într-o anumită taxonomie.

Deci, imaginați-vă că aveți două taxonomii, "fructe" și "legume", iar în taxonomia "fructelor" există două termeni: "mere" și "portocale".

În taxonomia "legumelor", la rândul lor, există și doi termeni: "morcovi" și "țelină". Să adăugăm trei șabloane la subiectul site-ului nostru: taxonomy.php. taxonomie-fructe.php și taxonomie-legume-carrots.php.

Pentru termenii taxonomiei "fructe", toate arhivele vor fi afișate utilizând șablonul taxonomie-fruits.php. deoarece nu există șabloane separate pentru termeni specifici.

În același timp, termenul "morcovi" din arhiva taxonomică "legume" va fi afișat folosind șablonul taxonomie-legume-carrots.php. Din moment ce nu există un șablon separat de taxonomie-legume.php, toți ceilalți termeni din taxonomia "legume" vor fi afișați prin intermediul șablonului taxonomy.php.

Utilizarea etichetelor de condiție

De fapt, ar trebui să încercăm să nu creați mai multe șabloane, deoarece acestea vor trebui să fie ajustate de fiecare dată când efectuăm modificări generale ale marcajului HTML de bază folosit pentru fiecare șablon de temă.

Dacă am nevoie de un șablon care este radical diferit de șablonul șablon arhive.php. De obicei folosesc adăugarea de condiții în arhive.php.

Crearea unei taxonomii personalizate

Adăugarea unei taxonomii personalizate se poate face într-unul din cele trei moduri: compilarea manuală a codului conform instrucțiunilor codului, pe care nu le recomand să le faceți; generarea de coduri, folosind GenerateWP; sau folosind plug-in-uri pentru a crea tipuri personalizate de conținut, cum ar fi Pods sau Tipuri.

Plugin-urile pentru tipuri de conținut personalizate vă permit să creați taxonomii personalizate și tipuri de înregistrări personalizate folosind mecanica WordPress fără a fi nevoie să scrieți singur codul.

Folosirea acestora este una dintre cele mai ușoare căi de a adăuga o taxonomie personalizată și de a aplica principiul cadru pentru a lucra cu tipuri de conținut personalizate.

Dacă alegeți una dintre primele două opțiuni și nu plug-in-ul, atunci va trebui să adăugați codul fie la fișierul functions.php al temei, fie la propriul plug-in. Vă recomandăm foarte mult să creați propriul plug-in și să nu adăugați cod la funcțiile. Chiar dacă nu ați creat niciodată un plug-in înainte, vă recomand să faceți acest lucru.

Deoarece atunci când adăugați codul în funcțiile funcționale.php, taxonomia va funcționa, dar când comutați subiectul (de exemplu, pentru că doriți să utilizați o temă nouă sau să remediați problemele), taxonomiile vor fi dezactivate.

Dacă doriți să vă scrieți propriul cod de taxonomie, urmați liniile directoare ale Codului sau creați-l cu GenerateWP. trebuie doar să o lipiți într-un fișier text și să adăugați o linie în partea de sus și veți obține propriul plugin. Acesta este descărcat și instalat, ca orice alt plugin.

Singura linie pe care trebuie să o adăugați pentru a crea un plugin personalizat este: / * Nume plugin: Taxonomie personalizată * /.

Mai jos este codul pluginului care înregistrează taxonomia personalizată "legume". Am creat-o folosind GenerateWP. pentru că este mult mai simplu și mult mai puțin probabil să faci greșeli decât dacă l-am făcut manual:

Apropo, în GenerateWP, am creat acest cod în mai puțin de două minute! Servicii excelente, scrierea manuală a codului nu are sens, acest site poate genera automat codul pentru tine.







Utilizarea WP_QUERY în taxonomiile personalizate

După ce ați adăugat o taxonomie personalizată, puteți solicita intrări pentru termenii acestei taxonomii. Pentru aceasta, putem folosi interogările de taxonomie prin WP_QUERY.

Solicitările de taxonomie pot fi foarte simple și destul de complexe. Un exemplu de interogare simplă este interogarea tuturor înregistrărilor cu un anumit termen. De exemplu, dacă aveți un tip de înregistrare denumit "jedi" și o taxonomie personalizată asociată numită "nivel", puteți obține o listă a tuturor Cavalerilor Jedi Master Jedi după cum urmează:

Dacă ați adăugat oa doua taxonomie personalizată numită "era", puteți selecta toți Jedi din Vechea Republică:

De asemenea, putem face comparații mai complexe folosind taxa completă. Argumentele tax_query vă permit să căutați un ID în loc de slug (așa cum am făcut înainte) și căutați mai mult de un termen.

De asemenea, vă permit să combinați mai multe solicitări de taxonomie și să stabiliți o relație între ele. În plus, putem folosi și instrucțiuni SQL. cum ar fi NOT IN. pentru a exclude condițiile.

Posibilitățile sunt nesfârșite. Pentru mai multe informații despre "Clasa de referință / WP_Query", consultați secțiunea "Parametri taxonomici" din pagina Cod.

Următorul fragment de cod caută înregistrări de tip "jedi" pentru a identifica Cavalerii Jedi și Maeștrii care nu aparțin epocii Vechii Republici:

Personalizarea arhivelor de taxonomie

Acum vom lua în considerare posibilitatea de a schimba funcționalitatea încorporată a WordPress. Acest lucru va fi util pentru cei dintre voi care folosesc WordPress nu ca o platformă de blog, ci ca un sistem de gestionare a conținutului care necesită adesea taxonomii personalizate.

Înainte de a afișa înregistrări prin buclă WordPress. sistemul recuperează automat înregistrările utilizatorilor în funcție de pagina pe care se află. Aceasta se face folosind clasa WP_QUERY. De exemplu, pagina principală a blogului afișează ultimele intrări. În arhiva taxonomică, utilizatorul preia cele mai recente înregistrări de taxonomie.

Aceasta înseamnă că puteți modifica interogarea folosind metodele de clasă înainte de a executa buclă principală WordPress. Dacă nu ți se pare clar acest lucru, nu-ți face griji - în următoarele câteva secțiuni ale acestui articol voi da exemple practice despre cum funcționează acest lucru.

În mod implicit, tipurile de înregistrări personalizate nu sunt incluse în această interogare. Dacă specificăm argumentele care sunt transmise WP_QUERY și doriți să includeți atât înregistrări standard, cât și înregistrări "jedi" definite de utilizator, argumentul nostru ar trebui să arate astfel:

În următorul fragment de cod, folosim set (). pentru a modifica argumentul post_type din valoarea implicită pe care înregistrările sunt utilizate pentru o serie de tipuri de înregistrări, inclusiv intrările și tipul de înregistrare personalizat "jedi".

Parametrul acestei funcții $ interogare este obiectul WP_QUERY înainte de a fi utilizat pentru a popula bucla principală.

Întrucât pagina poate conține mai multe bucle, de exemplu cele utilizate de widget-uri, aplicăm funcția condiție is_main_query (). pentru a face acest lucru să afecteze numai bucla principală și nu afectează nici o ciclu secundar al paginilor.

Ierarhii ale arhivelor

La fel ca atunci când vă creați propriul WP_QUERY pentru intrările de taxonomie, WP_QUERY din buclă principală utilizează argumente fisc_query pentru a obține intrările de taxonomie.

tax_query are argumentul include_children. pentru care valoarea implicită este 1 sau adevărată. Schimbarea la 0 sau false. putem exclude din intrările de arhivă cu termeni copil:

Rezultatul pare acceptabil în principiu, dar există mai multe deficiențe grave. Acest lucru este normal, deoarece atunci când ne confruntăm cu aceste neajunsuri, acesta va fi primul pas pentru a crea ceva cu adevărat cool.

Prima și cea mai mare problemă este că rezultatul nu este o pagină de arhivă pe care sunt derivate termenii copilului; este încă o înregistrare cu termenul mamei. O altă problemă este că nu avem o modalitate satisfăcătoare de a merge la arhiva termenului copil.

De asemenea, rețineți că întotdeauna puteți împacheta modificările pe care le faceți la etichetele de condiție, cum ar fi is_category () sau is_tax (). Dar foarte curând poate duce la dezordinea codului; astfel încât este mai logic să faceți o copie a fișierului archive.php și să ștergeți tot codul inutil.

În prima etapă, punem toate elementele din interiorul elementului, care va verifica dacă termenul actual al taxonomiei are termenii copilului. Dacă nu este așa, atunci nu vrem să scoatem nimic. Utilizăm get_term_children (). care returnează o matrice goală dacă termenul curent nu are elemente subordonate, pe care le putem verifica cu! empty ().

Pentru a face acest lucru pentru orice taxonomie care poate fi transmisă, trebuie să obținem termenul curent de taxonomie și taxonomie din matricea query_vars a obiectului global $ wp_query. Taxonomia slug este cuprinsă în cheia de taxonomie, iar termenul de slug este în cheia fiscală.

Pentru a utiliza get_term_children (). avem nevoie de un cod de termen. ID-ul nu este conținut în query_vars. Dar pentru ao obține, putem trece slug la get_term_by ().

Iată cum obținem toate informațiile de care avem nevoie:

Continuăm procesarea numai dacă $ terms nu este o matrice goală. Pentru a verifica dacă nu este gol, mai întâi re-completați termenii cu get_terms (). Acest lucru este necesar, deoarece get_term_children returnează numai o serie de identificatori.

Și avem nevoie de identificatori și nume care sunt conținute în obiectul returnat de get_terms (). Putem sări peste acest obiect printr-o buclă și să tipărim numele ca referințe. Puteți genera referințele prin transmiterea ID-urilor termenilor în get_term_link ().

Creați o pagină de destinație a arhivei taxonomice proprii

Dacă taxonomia ierarhică nu conține termenii părintelui superior, sistemul de arhivare standard va fi inutil pentru dvs. În schimb, doriți să afișați linkuri către nivelurile inferioare ale ierarhiei.

În acest caz, puteți crea pagina dvs. cu termeni proprii. Utilizăm din nou query_vars. Pentru a determina dacă utilizatorul se află pe prima pagină a arhivei taxonomice; Dacă da, folosim filtrul taxonomy_archive. pentru a include un șablon separat:

Acest callback verifică mai întâi pentru a vedea dacă utilizatorul se află în taxonomia pe care vrem să o vizăm. Putem verifica toate taxonomiile folosind is_tax ().

Ceea ce puneți în acest șablon special depinde de dvs. Puteți crea o listă de termeni folosind codul de mai sus. De fapt, puteți imprima orice - de exemplu, mai multe informații despre termenii de taxonomie sau link-urile către intrări specifice.

concluzie

După ce ați petrecut ceva timp, puteți configura arhitectura de bază a WordPress. care este încă întemnițată pentru scopul său original - o platformă de blog, pentru sarcinile a aproape orice site web sau aplicație web.

Utilizarea taxonomiilor personalizate pentru a organiza conținutul în funcție de nevoile dvs. vă va ajuta să vă dezvoltați multe dintre proiectele dvs. pe WordPress.

Traducerea articolului "Personalizarea arhivelor WordPress pentru categorii, etichete și alte taxonomii" a fost pregătită de o echipă prietenoasă a proiectului Saitostroenie de la A la Z.







Articole similare

Trimiteți-le prietenilor: