Dacă rulați un blog mare, va trebui să găsiți o modalitate de a vă ajuta pe cititorii dvs. să găsească conținut pe care vor să-l citească, în funcție de ceea ce citesc sau au citit.
O modalitate de a face acest lucru este folosirea unuia dintre multele pluginuri care identifică posturile asociate. Acestea utilizează diverse metode pentru a identifica alte postări care au un conținut similar cu cel actual, dar uneori nu vă dau rezultatele pe care le doriți.
O modalitate logică de a identifica postări precum cea afișată în prezent este prin utilizarea unor categorii, etichete sau termeni de taxonomie. Dacă ați putea identifica posturile din aceleași categorii ca și cea curentă, puteți afișa o listă cu cele mai recente postări din aceleași categorii, pentru a ajuta cititorii să găsească conținut similar.
În acest tutorial vă voi arăta cum să creați un plugin pentru a face acest lucru. Pluginul vă va oferi o funcție pe care o adăugați apoi la dvs. single.php
șablon pentru a afișa lista sub conținutul postării curente.
Pentru a urma acest tutorial, veți avea nevoie de:
single.php
șablonSă începem prin instalarea pluginului. Creați un fișier nou pentru plugin-ul dvs. - sun de-al meu legate de tutsplus-posts.php
.
În fișierul dvs. nou, adăugați următoarele:
Veți dori să schimbați detaliile autorului pe propriile dvs. detalii, dar aceasta oferă WordPress ceea ce are nevoie pentru a recunoaște pluginul și pentru a vă permite să îl activați în tabloul de bord.
Identificarea categoriilor Postărilor curente
Pentru a identifica alte postări cu aceleași categorii, trebuie să obțineți lista categoriilor în care se află postarea curentă și să le adăugați într-o matrice.
Începeți prin crearea funcției de menținere a codului, împreună cu câteva inițializări:
funcția tutsplus_related_posts () $ post_id = get_the_ID (); $ cat_ids = array ();Acum, în interiorul funcției dvs., utilizați
get_the_category ()
funcția de a prelua o serie de date referitoare la categoriile în care se află postul curent:categorii $ = get_the_category ($ post_id);Funcția are un singur parametru, postul id, care specifică faptul că este postul curent ale cărui categorii doriți să le obțineți.
Apoi, trebuie să creați o matrice care să dețină ID-urile tuturor categoriilor:
dacă (categoriile $ &&! is_wp_error ($ categories)) foreach (categoriile $ ca categorie $) array_push ($ cat_ids, $ category-> term_id);Să aruncăm o privire la ceea ce face acest cod:
categorii $
nu a returnat nici o eroare sau o eroare.Funcția dvs. va arăta astfel:
funcția tutsplus_related_posts () $ post_id = get_the_ID (); $ cat_ids = array (); categorii $ = get_the_category ($ post_id); dacă (categoriile $ &&! is_wp_error ($ categories)) foreach (categoriile $ ca categorie $) array_push ($ cat_ids, $ category-> term_id);
Acum, dacă aveți o matrice cu codurile de categorii din ea, puteți să o utilizați ca argument pentru o interogare pentru a identifica postările cu acele categorii.
Încă în interiorul funcției dvs., setați argumentele pentru interogare:
$ actual_post_type = get_post_type ($ post_id); $ args = array ('category__in' => $ cat_ids, 'post_type' => $ actual_post_type, 'posts_per_page' => '5', 'post__not_in' => array ($ post_id));
Aceste argumente vor găsi posturi de aceleași tipuri de posturi ca și cele curente, în aceleași categorii, și vor exclude postarea curentă. Am setat să emită cinci postări, însă puteți schimba întotdeauna acest lucru sau oricare dintre celelalte argumente, cum ar fi tipul de post, dacă ați aplicat categorii la mai mult de un tip de postare.
Acum rulați interogarea:
$ query = noua valoare WP_Query ($ args); dacă ($ query-> have_posts ()) ?>Aceasta scoate titlurile post în interiorul legăturilor către ele, într-o listă.
Adăugarea funcției la tema dvs.
Ultimul pas este să adăugați funcția într-un fișier șablon în tema dvs. Am creat o temă pentru tema Twenty Fourteen cu un nou
single.php
dosar, și adaug funcția acolo, sub conținutul. Acesta poate fi adăugat oriunde, atâta timp cât se află în buclă de mesaje WordPress.În fișierul dvs. șablon, adăugați următoarele:
tutsplus_related_posts ();Puteți vedea rezultatul de mai jos:
Notă: Site-ul demo este puțin confuz, deoarece etichetele și categoriile sunt afișate la sfârșitul fiecărei postări. Lista noastră nu folosește etichete, doar categorii, din care fiecare post din acest site are unul.
Alternative: etichete și termeni de taxonomie
Puteți modifica cu ușurință această funcție pentru a lucra cu taguri sau cu termeni de taxonomie.
Pentru a identifica etichetele în locul categoriilor, le-ați înlocui
get_the_category ()
funcția cuget_the_tags ()
, și apoi înlocuiți'Category__in'
argument pentru interogarea cu'Tag__in'
.Pentru a identifica termenii de taxonomie, ai folosi
get_the_terms ()
in loculget_the_category ()
, adăugând slugul taxonomic ca al doilea parametru. Veți înlocui apoi'Category__in'
argument cu ajutorul unui argument'Tax_query'
.Puteți căuta, de asemenea, postări cu aceleași termeni în mai multe taxonomii (inclusiv termeni și categorii), prin crearea a două matrice și folosirea a două argumente în interogarea dvs..
rezumat
În acest tutorial ați învățat cum să identificați categoriile în care se află postarea curentă, să adăugați codurile acestora într-o matrice și apoi să folosiți matricea respectivă pentru a rula o interogare care afișează postări din aceeași categorie. Acest lucru vă oferă mai mult control decât obțineți de la cele mai multe pluginuri de posturi asociate și înseamnă că puteți defini argumentele pentru interogarea dvs., astfel încât postările să fie afișate exact așa cum doriți.
De asemenea, puteți adapta această tehnică pentru a lucra cu etichete, termeni de taxonomie sau o combinație de două sau mai multe.