Interogări de interogări în ultimele versiuni ale WordPress

În ultimul an, s-au scris multe despre îmbunătățirea interfeței cu utilizatorul WordPress: cea mai discutată despre schimbare a fost îmbunătățirea experienței de scriere.

Dar dacă sunteți un dezvoltator, veți dori să știți mai puțin despre asta și mai multe despre ceea ce sa schimbat sub capota. Aici voi demonstra una dintre cele mai interesante schimbări pentru dezvoltatori: îmbunătățiri la anumite tipuri de interogări.

Principalele modificări sunt următoarele:

  • Suportul pentru interogări imbricate a fost adăugat pentru interogări privind metadatele postate, datele și termenii de taxonomie.
  • Au fost adăugați parametri suplimentari pentru interogarea comentariilor.
  • Și s-au fixat și niște bug-uri!

Hai să vedem schimbările.

Întrebări interogate

În versiunile anterioare ale WordPress, ai putea folosi un ȘI sau SAU pentru a defini interogări pentru termenii, datele și metadatele taxonomiei. Deci, de exemplu, următoarele argumente vor fi utilizate într-o interogare pe un site de rețetă care scoate rețete rapide de mic dejun:

 'post', 'tax_query' => array ('relație' => 'AND', array ('taxonomy' => 'speed' )), array ('taxonomie' => 'masă', 'field' => 'slug', 'terms' => array ('mic dejun')))); $ query = noua valoare WP_Query ($ args); ?>

Aceasta caută 'viteză' și 'masă' taxonomii și posturi de ieșire cu 'rapid' și 'mic dejun' termeni respectiv.

Dar dacă ați vrea să scrieți o interogare mai complexă? Să presupunem că doriți rețete rapide pentru micul dejun și rețete lente pentru prânz (poate pentru cineva care dorește să facă micul dejun repede, astfel încât să aibă mai mult timp să gătească prânzul!). Nu doriți să utilizați un simplu ȘI pentru a vă alătura toate elementele interogării dvs., de atunci veți obține rețete lente pentru micul dejun și masa de prânz, de exemplu. Și tu nu vrei să folosești unul SAU declarație care leagă toți termenii, așa cum veți obține toate felurile de rețete care au doar unul dintre termenii interogați împreună cu alți pe care doriți să îi filtrați.

Vestea bună este că acum poți face asta. Pentru a consulta rețetele rapide pentru micul dejun și rețete lente pentru prânz, ați putea folosi următoarele:

 array ('taxonomy' => 'masă', 'field' => 'slug', 'terms' => array (' ), array ('relationship' => 'AND'), array ('taxonomy' => 'speed', 'field' array ('taxonomy' => 'speed', 'field' => '' ' slug ',' termeni '=> array (' lent ')))))); $ query = noua valoare WP_Query ($ args); ?>

Aici am folosit două matrice imbricate:

  • Matricea exterioară utilizează SAU, deoarece căutăm postări care sunt fie rețete rapide de mic dejun, fie rețete de prânz lent.
  • Prima matrice imbricate caută posturi care sunt rețete rapide de mic dejun, folosind ȘI deoarece doriți ca postul să aibă ambii termeni.
  • Cea de-a doua matrice imbricata cauta retete de prânz lent, folosind din nou ȘI.

Desigur, ați putea să vă modificați interogările pentru a include mai mulți termeni și valori de taxonomie și pentru a obține cât mai complexe de care aveți nevoie.

Aplicarea interogărilor nesolicitate: Termeni de taxonomie, metadate și date

Exemplul pe care l-am prezentat mai sus utilizează termeni de taxonomie, dar această caracteristică a fost adăugată și la interogări de date și metadate. Metadatele sunt potențial în cazul în care lucrurile ar putea deveni interesante, având în vedere că aveți în vedere atât de multe valori.

Sintaxa funcționează exact în același mod pentru interogările de date și metadate. Pentru meta interogările pe care le înlocuiți tax_query cu meta_query si foloseste 'cheie' și 'valoare' ca parametri. Pentru interogările de date pe care le înlocuiți tax_query cu date_query și utilizați parametrii de date furnizați în Codul WordPress.

Comentariu Parametri

Pentru a interoga comentariile, utilizați WP_Comment_Query clasa în locul cel mai frecvent utilizate WP_Query clasă. Această clasă a adăugat opt ​​noi parametri:

  • 'Author__in': identificați autorul comentariului (sau o serie de autori)
  • 'Author__not_in': identificarea comentariilor nu de un anumit autor (sau de o serie de autori)
  • 'Post_author__in': identificați autorul (sau grupul de autori) al postării pe care a fost făcut comentariu
  • 'Post_author__not_in': exclude comentariile făcute în postări scrise de un anumit autor sau de o serie de autori
  • 'Comment__in': comentarii cu un anumit ID sau o serie de ID-uri
  • 'Comment__not_in': excludeți comentariile cu un anumit ID sau un șir de coduri de identificare
  • 'postează în': comentarii făcute într-o postare sau dintr-un șir de postări (utilizând codul postului)
  • 'Post__not_in': exclude comentariile făcute într-o postare sau într-un șir de postări (utilizând ID-ul postului)

Valorile folosite pentru acestea sunt ID-ul autorului, ID-ul comentariului sau ID-ul postului, după caz.

Rețineți că WP_Comment_Query clasa acceptă și interogări imbricate.

Corectarea erorilor

Au existat, de asemenea, câteva corecții de erori pe care le-ați putea fi de folos:

  • Un bug care a cauzat interogările să eșueze când a date_query a fost folosit împreună cu o tax_query sau meta_query a fost fixat.
  • Cand 'orderby' => 'meta_value' a fost folosit atunci când a trecut 'Meta_query' cu SAU relație în WP_Query, acest lucru a folosit pentru a sparge interogarea. Asta a fost rezolvată.

Dacă doriți scăderea tuturor detaliilor, o puteți găsi pe site-ul de bază WordPress.

rezumat

Aceste îmbunătățiri la interogări iau WordPress cu un pas mai departe spre capacitatea completă a CMS. Abilitatea de a utiliza interogări imbricate înseamnă că puteți transmite conținut în moduri mult mai flexibile și complexe. Va fi interesant să vedem cum îi folosesc oamenii!

Cod