Mastering WP_Query 10 exemple utile

Acum, că am învățat aproape totul despre WP_Query clasa, este timpul să încercați câteva exemple. În această parte, vom lucra la 10 scenarii diferite pentru a utiliza WP_Query clasa și funcțiile conexe.

Va fi un exercițiu distractiv și sper că va fi la fel de educativ. Sa incepem!

O memento rapidă privind crearea unei buclă cu WP_Query

Doar pentru a face acest articol ușor de înțeles separat de seria "Mastering WP_Query", ar trebui să fac un nano-tutorial pentru crearea de bucle WordPress cu WP_Query clasă.

Nu este altceva decât să creezi o buclă obișnuită. O buclă tipică WordPress merge astfel:

Și creând o buclă cu WP_Query clasa are doar câteva diferențe:

 'news', 'posts_per_page' => 3); $ my_query = noua valoare WP_Query ($ args); dacă ($ my_query-> have_posts ()) în timp ce ($ my_query-> have_posts ()) $ my_query-> the_post (); // Postul de date se duce aici.  // Resetați datele "$ post" la postarea curentă din interogarea principală. wp_reset_postdata (); ?>

Să vedem diferența dintre cele două:

  • Am stabilit câteva argumente pentru noi WP_Query instanță,
  • Am instanțiat WP_Query clasă,
  • Am adăugat $ My_query-> la începutul have_posts () și bara() (astfel încât acestea sunt acum metodele WP_Query clasă),
  • Și ne reinițializăm datele $ postare astfel încât acesta poate reveni la interogarea principală.

Acum știm cum să creăm o buclă WP_Query și diferența dintre o buclă obișnuită și o buclă creată cu WP_Query. Nu vom crea bucle în toate exemplele (de dragul păstrării scurtului tutorial și al subiectului), astfel încât să vă puteți referi la această secțiune dacă trebuie să creați o buclă cu exemplele de mai jos.

Exemplul # 1: Mesajele autorului în acest an

Să presupunem că doriți să enumerați o postare a unui anumit autor scrisă în anul curent într-o secțiune specială "Mesajele autorului din acest an". O combinație simplă de două WP_Query parametrii vor fi suficienti:

 'john', // Obțineți postările sale din acest an. 'an' => $ actuală); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

Treceți această interogare într-o buclă și sunteți bine să mergeți!

Exemplu # 2: "Ultimele postări din această categorie" (cu excepția mesajului curent)

Să spunem că doriți să creați o buclă în fiecare post în paginile lor unice de postare și să listați ultimele postări din categoria în care este postul. Desigur, trebuie să excludeți postarea curentă în cazul în care aceasta ar putea fi una dintre cele mai recente postări din acea categorie. Iată cum creați interogarea cu 'pisică' și 'Post__not_in' parametri:

term_id; // Argumentele pentru configurare. $ args = array (// Trimiteți postările categoriei. 'cat' => $ current_post_first_cat_id, // Excludeți postarea curentă 'post__not_in' => array ($ current_post_id)); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

Pentru buclă, vă sugerez să creați trei sau patru coloane cu miniaturi post deasupra titlurilor postate. Acesta va arata foarte frumos chiar sub post și înainte de secțiunea comentarii.

Exemplu # 3: "Cele mai populare postări" Ordonate după numărul de comentarii

WordPress nu are un sistem integrat de afișare a postărilor, iar pluginurile care furnizează această funcție sunt renumite pentru încetinirea site-ului web (deoarece în fiecare vizualizare post, plugin-urile scriu din nou în bază de date pentru a înregistra vizualizarea contează). Cu toate acestea, există un alt tip de măsură pentru a determina ce postări sunt cele mai "populare": numărarea comentariilor. Și spre deosebire de numărul de vizualizări, numărul de comentarii este deja în baza de date - WP_Query clasa face super-ușor să comanzi postări după numărul de comentarii:

 'comment_count'); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

Vedeți cât de ușor este asta? Acum imaginați-vă crearea unui șablon de pagină personalizat cu o buclă care rulează această interogare - o pagină "Cele mai comentate postări".

Exemplul # 4: Setarea simplă a cursorului

Când utilizați WordPress pentru a construi site-uri corporative, portofolii sau reviste web, sliders au devenit un standard industrial "trebuie să aibă". Nu sunt un fan al slider-urilor (cred că e rău UX), dar web-ul pare să-i placă, așa că nu pot să spun nu clienților mei în timp ce fac site-uri pentru ei. Dacă doresc sliders, folosesc o interogare simplă folosind WP_Query clasă:

 'slider', // Obțineți o anumită categorie de cursor. 'category_name' => 'home-slides', // Obțineți toate diapozitivele și nu paginați. 'nopaging' => adevărat); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

'pisică' argumentul poate fi utilizat pentru a prelua diapozitive din diferite categorii, astfel încât să puteți separa grupurile de diapozitive și să utilizați glisoare multiple pe mai multe pagini. Dacă intenționați să utilizați doar un singur glisor în site-ul dvs., puteți șterge acea linie și sunteți bine să mergeți.

Exemplul nr. 5: Citat din bara laterală

Dacă sunteți interesat de literatură sau de religie, ați putea dori să aveți câteva dintre citatele dvs. preferate în bara laterală - nu este o pierdere de spațiu dacă utilizați zona cu scopul. Deci, dacă doriți să listați o cotare aleatorie în bara laterală a fiecărei vizualizări de pagină, puteți utiliza următorul fragment de cod pentru a crea tipul de postare și utilizați următoarea interogare pentru a crea o buclă în bara laterală:

 "Citate", "public" => true); register_post_type ('citate', $ args);  add_action ('init', 'quote_post_type'); // Argumentele pentru configurare. $ args = array (// Obțineți tipul "psot" de tipul "psot" 'post_type' => 'citate', // Randomize the order. > 1,); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

O soluție simplă și elegantă.

Exemplul nr. 6: Afișarea produselor între un interval de prețuri

Am găsit acest exemplu pe Scribu.net și trebuie să spun că ar putea fi cel mai bun WP_Query truc în acest tutorial. Este un pic mai tehnic decât ceilalți, pentru că poate fi aplicat pe un site web de tip e-commerce care utilizează WordPress în acest context.

Iată fragmentul de cod pe care îl veți utiliza dacă doriți să afișați elemente dintr-un tip de articol particularizat "Produs" și să filtrați rezultatele cu câmpurile personalizate "de preț":

 'product', // Configurați "interogarea meta". "meta_query" => array (array (// obțineți câmpul "price") "key" => 'price', // setați valorile prețului. comparati '=>' BETWEEN ', // priviti doar campurile numerice.' type '=>' numeric ',))); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

Un kudos mare pentru Silviu-Cristian Burca!

Exemplu # 7: Un cod scurt pentru a încorpora postări în interiorul postărilor

Iată un exercițiu distractiv - și vom folosi și API-ul Shortcode! În acest exemplu, vom crea un scurtcod care poate încorpora o postare în cadrul unei postări. (Abia m-am abătut de la denumirea codului scurt [Postception].) În următorul fragment de cod, creăm o funcție de cod scurt care ne permite să încorporăm postări (sau orice tip de articol personalizat) și ne permite să alegem să afișăm postul complet sau doar un fragment:

 'post', 'plin' => true), $ atributele)); // argumente de instalare $ args = array (// Obțineți post tip ("post" implicit) => Introduceți o nouă instanță de interogare $ my_query = new WP_Query ($ args); // Verificați că avem rezultate de interogare dacă ($) my_query-> have_posts ()) // Începeți generarea de marcare $ output = '
„; // Începeți cu buclă peste rezultatele interogării. în timp ce ($ my_query-> have_posts ()) $ my_query-> the_post (); // Adăugați titlu la ieșire. $ output = '

„; $ ieșire. = get_the_title (); $ output = '

„; // Descărcați mesajul complet dacă '$ full' este adevărat, în caz contrar, arătați extrasul dacă ('true' === $ plin) // Adăugați întregul conținut la ieșire. $ output = '
„; $ ieșire. = get_the_content (); $ output = '
„; altceva // Adauga extrasul la ieșire. $ output = '
„; $ output = get_the_excerpt (); $ output = '… ". __ ("Vezi post complet", "tutsplus"). '' '; $ output = '
„; // Începeți marcarea generatoare. $ output = '
„; altceva // Mesaj de ieșire pentru a permite utilizatorului să știe că nu au fost găsite postări. $ output = '
„; $ output = '

". __ ("Nu s-au găsit mesaje", "tutsplus"). '

„; $ output = '
„; wp_reset_postdata (); returnați outputul $; add_shortcode ('embed_post', 'tutsplus_embedded_post_shortcode'); ?>

Exemplul # 8: Lista postărilor curente programate (cu extrasele opționale)

Iată o idee: De ce nu afișați niște "perverse" cu privire la mesajele dvs. viitoare către vizitatorii dvs.? Puteți utiliza următoarea funcție pentru a lista postările dvs. programate, cu sau fără extrase după titluri:

 * * Utilizare fără extrase: * *  * / tutsplus_show_drafts ($ show_excerpts = true) // Argumente de instalare. $ args = array ('post_status' => 'viitor', 'nopaging' => true); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); // Verificați că avem rezultate de interogare. dacă ($ my_query-> have_posts ()) // Începeți generarea de marcare. $ output = '
„; // Începeți cu buclă peste rezultatele interogării. în timp ce ($ my_query-> have_posts ()) $ my_query-> the_post (); // Titlul postului de ieșire și extrasul (dacă este activat). $ output = '
„; $ output = '

". get_the_title (). '

„; $ ieșire. = get_the_title (); $ output = '„; dacă ($ show_excerpts) $ output. = '
„; $ output = get_the_excerpt (); $ output = '
„; $ output. = '
„; // Marcarea finală a generării. $ output = '
„; altceva // Lăsați utilizatorul să știe că nimic nu a fost găsit. $ output = '
„; $ output = '

". __ ("Nimic găsit", "tutsplus"). '

„; $ output = '
„; wp_reset_postdata (); returnați outputul $; ?>

Exemplul # 9: "Postarea de la un an în urmă azi"

Dacă blogul dvs. este mai vechi de un an și conținutul dvs. este nemuritor (ceea ce înseamnă că o persoană din 2015 și 2025 va găsi articolul relevant), adăugarea unei secțiuni "Postare de la un an în urmă" poate amplifica afișările dvs. de pagină. Iată cum faceți acest lucru:

 data ('j'), // luna (1 - 12). 'monthnum' => data ('n'), // An (minus 1). 'year' => date ('Y') - 1, // Arată doar o postare. 'posts_per_page' => 1); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

Utilizați această interogare pentru a crea o buclă care afișează o singură postare din anii trecuți.

Exemplul # 10: Afișați copiii paginii curente

Nu aveți altceva decât titlul de subpagini pentru a le pune în pagina "Servicii", "Lucrările noastre" sau "Portalul meu"? Poate un paragraf intro, dar ai dreptate, acele pagini sunt sortite să fie "substituenți". Totuși, este o idee bună să plasați sub-pagini acolo - poate o rețea cu miniaturi pătrată și titluri de mai jos. Să vedem ce interogare ar trebui să utilizăm la crearea unui astfel de șablon de pagină:

 $ current_page_id, // Dezactivați paginarea. 'nopaging' => adevărat); // Instanțiați o nouă instanță de interogare. $ my_query = noua valoare WP_Query ($ args); ?>

Înfășurarea în sus

Sper că v-ați bucurat de aceste exemple la fel de mult ca și când le-am pregătit. Am acordat o atenție deosebită oferindu-i exemple variate atât pentru a fi distractiv, cât și pentru a-ți declanșa creativitatea.

Dacă v-ați gândit la exemple mai bune în timp ce le citiți pe acestea sau dacă aveți întrebări, nu ezitați să scrieți un comentariu mai jos. Și dacă ți-a plăcut articolul, nu uita să îl împarți cu prietenii tăi!

În partea următoare, vom vorbi despre WP_User_Query, una dintre clasele de soră din WP_Query. Ne vedem atunci!

Cod