Cum să utilizați clasa WP_Query în WordPress?

Publicat: 2024-08-09

Cuprins
Ce este WP_Query?
O scurtă notă despre WP_Query
Cum puteți utiliza WP_Query?
WP_Query Vs query_posts(): Care este de preferat?
Câteva exemple de utilizare a WP_Query
Concluzie

Ce este WP_Query?

WP_Query este o clasă PHP puternică în WordPress, care vă permite să construiți interogări personalizate la setul de date pentru a prelua postări și alt conținut și a le reda pe pagină. Oferă o modalitate flexibilă și eficientă de a interacționa cu baza de date și de a prelua conținut pe baza diferitelor criterii.


O scurtă notă despre WP_Query

S-ar putea să fi știut că WordPress stochează toate datele site-ului dvs. precum postări, pagini, comentarii sau setări în baza de date MySQL.

Așadar, pentru oricine vă vizitează site-ul web, o solicitare este trimisă imediat la această bază de date, regăsind datele solicitate fie că sunt postări sau pagini de afișat pe ecranul dumneavoastră.

Dar trebuie să fii surprins să știi că, cu ajutorul WP_Query, poți crea interogări care te pot ajuta să regăsești anumite informații din baza ta de date. Deci, ori de câte ori cineva caută conținutul tău, WordPress folosește această clasă încorporată.

Fără îndoială, puteți folosi în continuare SQL pentru a scrie toate aceste interogări, dar este destul de dificil și nu este cel mai simplu mod de a face acest lucru. Pe de altă parte, WP_Query este mult mai ușor.

WP_Query este atât de util încât puteți crea interogări personalizate pentru a afișa conținut specific pe site-ul dvs., fără ca vizitatorul să fie nevoit să îl caute.

Pe scurt, WP_Query este un instrument care face mai ușor pentru dezvoltatori să controleze ce conținut este afișat pe site-urile WordPress și cum arată acesta, fără a fi nevoie să scrie cod complicat.

Să presupunem că creați un tip special de conținut în WordPress numit „blog”. Pentru a afișa aceste postări „de blog” pe site-ul dvs., puteți scrie o interogare specială folosind WP_Query.

// WP QUERY
$query = new WP_Query([
'post_type' => 'blog', // Type of content
'posts_per_page' => 6, // Number of posts to show
'category_name' => 'Entertainment' // Category filter
]);

Acum, pentru a afișa interogarea solicitată, WP_Query oferă comenzi rapide și funcții încorporate care vă ajută să personalizați bucla. The Loop este un fragment de cod PHP pe care WordPress îl folosește pentru a afișa postări pe o pagină.

WordPress procesează și formatează fiecare postare în funcție de criteriile pe care le-ați stabilit în WP_Query (cum ar fi tipul de postare, numărul de postări și categoria).

Acest instrument puternic îi ajută pe dezvoltatori să personalizeze cu ușurință modul în care temele WordPress afișează conținutul fără a fi nevoie să scrie interogări complexe la baza de date


WPOven Dedicated Hosting

Cum puteți utiliza WP_Query?

Acum știți ce este WP_Query și ce face exact. Permiteți-ne să verificăm diferite scenarii de caz în care puteți utiliza acest instrument puternic.

1. Creați bucla în WP_Query

În primul rând, ar trebui să înțelegeți ce este Loop. Este o parte a WordPress care este foarte receptivă pentru preluarea datelor postărilor din date și le afișează pe site-ul dvs. web. Se concentrează în principal pe a decide cum arată conținutul tău pe baza șabloanelor temei tale.

Ce poate afișa bucla pe site?

În funcție de setările pe care le alegeți, bucla poate afișa:

  • Tipuri de postări personalizate și câmpuri personalizate
  • Postați titluri și scurte descrieri pe pagina dvs. de pornire
  • Conținutul și comentariile unei singure postări
  • Conținutul paginilor individuale folosind etichete șablon

Pentru o mai bună înțelegere, mai jos este o structură simplă a buclei.

Exemplu de buclă de bază

<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>

  • Aici, funcția have_posts() verifică dacă există postări disponibile.
  • while ( have_posts() ) : the_post(); : Dacă există postări, această buclă va rula pentru fiecare postare și va afișa conținutul acesteia.

Personalizarea buclei cu WP_Query

Uneori, nu doriți să vă afișați toate postările. Puteți folosi WP_Query pentru a personaliza ceea ce este afișat:

<?php
// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// No posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Cum funcționează această buclă personalizată

  • Configurarea interogării : $the_query = new WP_Query( $args ); creează o interogare personalizată pe baza parametrilor setați (cum ar fi tipul postării, categoria etc.).
  • Rularea buclei : if ( $the_query->have_posts() ) { ... } verifică dacă există postări care se potrivesc cu interogarea ta. Dacă există, afișează titlul fiecărei postări într-o listă.
  • Resetarea datelor postului : wp_reset_postdata(); se asigură că datele originale ale postării sunt restaurate după rularea buclei personalizate.

Opțiuni de personalizare

Cu WP_Query, puteți:

  • Afișați postări dintr-o anumită categorie, autor sau interval de date
  • Afișați postări cu anumite etichete sau câmpuri personalizate

2. Argumente WP_Query

Când doriți să obțineți anumite postări de pe site-ul dvs. WordPress, trebuie să creați WP_Query și pentru aceasta, trebuie să includeți patru părți de bază:

  • Argument de interogare : Spune WordPress ce date trebuie să recupereze.
  • Interogarea : folosește argumentul pentru a prelua datele.
  • The Loop : procesează și afișează fiecare postare.
  • Post Data Reset : Resetează datele după rularea buclei.

Dar una dintre cele mai esențiale componente ale WP_Query este argumentul (numit adesea WP_Query args) care este responsabil pentru extragerea postării specifice pe care doriți să o obțineți din baza de date.

Este atât de important încât, în loc să afișeze toate postările, argumentul stabilește condiții pentru a afișa doar anumite postări.

Exemplu de argument

  • Linia $args : Aici includeți argumentul interogării.
  • Structura : puneți anumiți parametri într-o matrice. Iată un exemplu de bază,

$args = array(
'parameter1' => 'value',
'parameter2' => 'value',
'parameter3' => 'value'
);

Exemplu specific

Dacă doriți să afișați postări cu eticheta „Erori WordPress”, ați configura argumentul de interogare astfel:

$query = new WP_Query( array( 'tag' => 'WordPress Errors' ) );

De ce argumentul este esențial

  • Fără argument, fără conținut : dacă nu includeți un argument WP_Query, WordPress nu va ști ce postări să afișați. Interogarea dvs. nu va prelua niciun conținut din baza de date.

3. Setați parametrii WP_query

Parametrii sunt ceva care face ca WP_Query să fie util și puternic. Cu varietatea acestora, a devenit ușor pentru oricine să filtreze căutările în baza de date.

De exemplu, atunci când doriți să afișați anumite postări pe site-ul dvs. WordPress, utilizați WP_Query și pentru a vă asigura că obțineți postarea potrivită, puteți seta parametri. S-ar putea să ai o altă întrebare în minte Care sunt parametrii?

Ei bine, parametrii sunt la fel ca instrucțiunile care îi spun WordPress ce fel de postări să obțină din baza de date.

Exemple de parametri comuni

Iată câțiva parametri comuni pe care îi puteți utiliza:

  • pisică : afișează postări din anumite categorii.
  • autor : afișează postările unuia sau mai multor autori specifici.
  • post_status : afișează postările care sunt în desfășurare, programate, publicate sau șterse.
  • orderby : sortează postările după autor, tipul postării, dată etc.
  • posts_per_page : Setează numărul de postări de afișat.
  • tag : afișează postările cu anumite etichete.
  • ordine : sortează postările în ordine crescătoare sau descrescătoare.
  • post_type : definește dacă se afișează postări, pagini sau tipuri de postări personalizate.

Cum se utilizează parametrii

Dacă doriți să afișați postări dintr-o anumită categorie, puteți utiliza parametrul category_name . Iată un exemplu:

$query = new WP_Query( array( 'category_name' => 'WordPress' ) );

Aceasta va afișa toate postările din categoria „personal” și orice subcategorii.

Exemplu mai complex

În acest exemplu, demonstrăm cum puteți utiliza mai multe valori în diferite argumente pentru a crea o interogare complexă și personalizată pentru a obține postările exacte pe care le doriți.

Vom prelua postările care sunt în anumite categorii, au anumite etichete, sunt scrise de anumiți autori și sunt sortate după dată în ordine descrescătoare.

$args = array(
'category__in' => array(5, 10), // Categories with IDs 5 and 10
'tag__in' => array('featured', 'popular'), // Posts tagged with 'featured' or 'popular'
'author__in' => array(1, 2), // Authors with IDs 1 and 2
'orderby' => 'date', // Order by date
'order' => 'DESC', // In descending order
'posts_per_page' => 10 // Limit to 10 posts
);

$query = new WP_Query($args);

// The Loop
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Display post content
the_title('<h2>', '</h2>');
the_excerpt();
}
} else {
// No posts found
echo 'No posts found';
}

// Restore original Post Data
wp_reset_postdata();

  • categorie__in : ajută la specificarea faptului că dorim postări din categorii cu ID-urile 5 și 10.
  • tag__in : Specifică faptul că vrem postări etichetate fie cu „focalizate”, fie cu „populare”.
  • autor__in : Specifică faptul că dorim postări ale autorilor cu ID-urile 1 și 2.
  • orderby : Specifică faptul că dorim să ordonăm postările după data la care au fost publicate.
  • ordine : Specifică faptul că vrem postările în ordine descrescătoare (mai întâi cele mai noi).
  • posts_per_page : limitează numărul de postări preluate la 10.

4. Modificați obiecte cu metode și proprietăți ale clasei

În WordPress, WP_Query este o clasă PHP specială folosită pentru a prelua postări din baza de date. Gândiți-vă la el ca la un instrument care vă ajută să obțineți exact postările pe care doriți să le afișați pe site-ul dvs.

Ce sunt proprietățile și metodele clasei?

În PHP, o clasă poate avea proprietăți (cum ar fi variabile) și metode (cum ar fi funcțiile). Iată o modalitate simplă de a le înțelege:

  • Proprietăți : acestea sunt ca niște containere care dețin informații. În contextul WP_Query , proprietățile pot include lucruri precum lista de postări sau numărul de postări găsite.
  • Metode : acestea sunt ca instrumente sau acțiuni pe care le puteți efectua. În WP_Query , metodele vă pot ajuta să verificați dacă există postări, să obțineți titlul unei postări sau să resetați interogarea.

Puteți schimba proprietățile direct?

Nu, nu puteți schimba proprietățile în mod direct, chiar și dezvoltatorii descurajează acest lucru, dar puteți utiliza Metode alternativ.

Metodele sunt la fel ca instrumentele sau comenzile oficiale care vă ajută să urmați calea corectă. Acestea sunt exact ceea ce funcționează ca și funcțiile, atunci când efectuați anumite modificări în metodele WP_Query, puteți personaliza și datele preluate.

Exemplu de utilizare a metodelor în WP_Query

În acest exemplu, o funcție reset_postdata() poate fi un pas critic în scrierea WP_Query. Această metodă va reseta proprietățile pentru $current_post și $post.

<?php
// Create a new query with specific arguments
$the_query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 5,
'category_name' => 'news',
));
?>

<?php if ($the_query->have_posts()) : ?>
<!-- Display the posts -->
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<p><?php the_excerpt(); ?></p>
<?php endwhile; ?>
<!-- Reset the post data to avoid conflicts -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Dărâma:
  • Crearea unei interogări :
    • $the_query = new WP_Query($args); : creează un nou obiect WP_Query cu argumentele pe care le-ați furnizat.
  • Verificarea postărilor :
    • if ($the_query->have_posts()) : Verifică dacă există postări de afișat pe baza interogării tale.
  • Buclă prin postări :
    • while ($the_query->have_posts()) : $the_query->the_post(); : setează datele postării astfel încât să le puteți afișa.
  • Afișarea postărilor :
    • the_title(); și the_excerpt(); : Afișează titlul și fragmentul postării curente.
  • Resetarea datelor postării :
    • wp_reset_postdata(); : Resetează datele postării globale la postarea interogării principale. Acest lucru este important pentru a evita deranjarea altor părți ale paginii dvs.

Metode comune pe care le puteți folosi

Iată câteva metode comune în WP_Query pe care le puteți utiliza pentru a lucra cu interogarea dvs.:

  • get_posts :
    • Ce face : preia o listă de postări.
    • Exemplu :phpCopy cod $posts = get_posts(array('category' => 'news'));
  • have_posts :
    • Ce face : verifică dacă există postări de afișat.
    • Exemplu :phpCopy code if ($the_query->have_posts()) { // There are posts to show }
  • the_post :
    • Ce face : configurează datele postării curente.
    • Exemplu : phpCopy cod $the_query->the_post();
  • fill_query_vars :
    • Ce face : completează detaliile interogării lipsă.
    • Exemplu : phpCopy cod $the_query->fill_query_vars($args);

Oferind WP_Query informațiile potrivite, îl puteți personaliza pentru a efectua diferite sarcini. Această metodă este o modalitate flexibilă și sigură de a ajusta proprietățile clasei.


WP_Query Vs query_posts(): Care este de preferat?

Mai jos este un tabel de comparație detaliat între WP_Query și query_posts() în WordPress, inclusiv câteva dintre principalele puncte care vă pot ajuta să înțelegeți de ce WP_Query este în general preferat față de query_posts() :

Caracteristică WP_Query query_posts()
Scop Creați interogări personalizate pentru preluarea postărilor din baza de date. Modificați interogarea principală din pagină (nu este recomandată pentru uz general).
Utilizare principală Ideal pentru a crea interogări noi și pentru a afișa postări într-un mod personalizat. Folosit în general pentru a modifica interogarea principală, dar nu este recomandat.
Utilizare recomandată Da, este modalitatea recomandată de a prelua și afișa postări. Nu, cel mai bine este să evitați utilizarea acestei funcții în bucla principală, pluginuri și teme.
Efect asupra interogării principale Nu afectează interogarea principală. Puteți rula interogări personalizate fără a modifica bucla principală. Ignoră complet interogarea principală, ceea ce poate provoca conflicte sau rezultate neașteptate.
Resetarea datelor postării Utilizați wp_reset_postdata() pentru a restabili interogarea inițială după rularea unei interogări personalizate. Nicio funcție echivalentă, ceea ce înseamnă că poate fi necesar să restaurați manual datele postării interogării principale.
Gestionarea interogărilor multiple Poate gestiona mai multe interogări și este conceput pentru scenarii complexe. Gestionează o singură interogare și modifică interogarea principală, ceea ce poate fi problematic pentru mai multe interogări.
Impactul asupra performanței În general, mai bine pentru performanță, deoarece nu modifică interogarea principală. Poate fi mai puțin eficient și poate cauza probleme datorită impactului său asupra interogării principale.
Exemple de interogări personalizate $custom_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5)); query_posts(array('post_type' => 'post', 'posts_per_page' => 5));
Exemplu de resetare a datelor <?php wp_reset_postdata(); ?> Nicio funcție de resetare, este necesară o resetare manuală dacă se fac modificări la interogarea principală.
Ușurință în utilizare Ușor de utilizat, cu metode și funcții încorporate pentru interogarea postărilor și paginilor. Mai puțin simplu și poate duce la probleme dacă nu este utilizat cu atenție.
WP_Query vs query_posts()

WPOven Dedicated Hosting

Câteva exemple de utilizare a WP_Query

Pentru a înțelege mai bine WP_Query și utilizarea sa practică, consultați câteva dintre exemplele de mai jos:

1. Afișați cele mai recente postări publicate în această săptămână

Dacă aveți o bază bună de utilizatori sau o cantitate decentă de trafic web, înseamnă că vizitatorilor dvs. le place conținutul dvs. și ar dori să citească cele mai recente articole publicate pe site-ul dvs.

În timp ce vă proiectați site-ul web, puteți prezenta postări recente într-o secțiune dedicată a paginii web. Din fericire, cu WP_Query, puteți găsi cu ușurință postări bazate pe parametrii de dată. Să vedem cum.

<?php
$arguments = array(
"date_query" => array(
array(
"year" => date( "Y" ),
"week" => date( "W" ),
)
)
);
$posts = new WP_Query($arguments);
?>

În acest exemplu, creăm un WP_Query pentru a găsi postări publicate în săptămâna curentă. Folosim o parte specială a WP_Query numită date_query pentru a specifica criteriile noastre de căutare.

Scopul principal al interogării a fost de a găsi postări publicate în cursul săptămânii curente. Și pentru asta, am folosit parametrul date_query pentru a căuta postări bazate pe date. Este nevoie de o serie de argumente legate de dată.

Deci, atunci când personalizați parametrul date_query , puteți prelua și afișa postări care au fost publicate recent. Cu toate acestea, sunteți liber să specificați valori personalizate pentru a face interogarea mai eficientă și pentru a evidenția cele mai recente articole scrise în ultima săptămână.


2. Afișați cea mai recentă postare din o anumită categorie

Vizitatorii site-ului dvs. ar putea căuta adesea cele mai noi informații și pentru a crește implicarea și afișările de pagină, este o practică bună să sugerați câteva postări mai asemănătoare care le-ar putea plăcea.

Deși, există multe modalități de a lega postările conexe în WordPress WP_Query este una dintre modalitățile eficiente de a face acest lucru. Mai ales o modalitate excelentă pentru site-ul web care postează întotdeauna conținut actualizat.

De exemplu, dacă cineva citește un articol despre erorile WordPress, WP_Query poate ajuta la afișarea altor articole similare și recente.

Așadar, dacă doriți să obțineți cele mai recente postări dintr-o anumită categorie, utilizați acest WP_query și faceți mici modificări care includ informațiile site-ului dvs.:

<?php

// Get the current post id.
$current_post_id = get_the_ID();

// Get the current post's category (first one if there's more than one).
$current_post_cats = get_the_category();
$current_post_first_cat_id = $current_post_cats[ 0 ]->term_id;

// Setup arguments.
$args = array(
// Get category's posts.
'cat' => $current_post_first_cat_id,
// Exclude current post.
'post__not_in' => array( $current_post_id )
);

// Instantiate new query instance.
$my_query = new WP_Query( $args );

?>


3. Afișați postările de la Același Autor și din aceeași Categorie

Este foarte posibil ca, dacă vizitatorului îi place conținutul dvs., să îi placă opiniile, stilul de scriere și percepția autorului.

Pentru aceasta, puteți folosi WP_Query pentru a sugera cititorilor dvs. postări similare scrise de același autor. Interogarea va căuta postările scrise de același autor pentru aceeași categorie ca și postarea curentă.

Pentru aceasta, trebuie să creăm un șir WP_Query specific, care va căuta postări cu autori similari și aceeași categorie.

Iată codul:

<?php
$arguments = array(
"author_name" => "Rahul",
"category_name" => "WordPress",
"posts_per_page" => 3,
);
$posts = new WP_Query($arguments);
?>

În codul de mai sus, trebuie să înlocuiți „Rahul” cu numele autorului și „WordPress” cu numele categoriei.


4. Afișați cele mai populare postări

La fel ca cele mai recente sau recente postări pe care le-ați afișat pentru cititorii dvs. ați putea, de asemenea, să arătați postări pe subiecte care le plac cititorilor dvs. și care le implică foarte mult. Pentru a realiza acest lucru, puteți utiliza parametrul orderby și îl puteți transmite argumentului comment_count .

<?php
$arguments = array(
"category_name" => "WordPress Errors",
"orderby" => "comment_count",
"posts_per_page" => 5,
);
$posts = new WP_Query($arguments);
?>

WP_Query de mai sus va căuta postări din categoria „Erori WordPress” și va filtra rezultatele după numărul de comentarii pe care le are fiecare postare.

Rezultatul va afișa cinci postări cu cele mai multe comentarii, în ordine descrescătoare de la stânga la dreapta, începând cu postarea cu cea mai mare implicare și terminând cu cea mai mică.


Concluzie

Acum ați văzut cât de puternic este WP_Query și cum vă este ușor să efectuați solicitări de baze de date în WordPress. De asemenea, vă oferă flexibilitatea de a vă personaliza site-ul și de a oferi o experiență unică pentru vizitatori.

Pentru a utiliza WP_Query, puteți:

  • Creați o buclă: afișați-vă postările.
  • Utilizați argumente de interogare: personalizați-vă căutările.
  • Setați parametri specifici: filtrați rezultatele.
  • Modificați proprietățile clasei: ajustați rezultatele interogării cu metode.

Dacă ai stăpânit toate aceste tehnici, vei putea recomanda cu ușurință anumite postări bazate pe diverși factori, cum ar fi popularitatea și data.

Această tehnică ajută la creșterea angajamentului utilizatorului, la îmbunătățirea experienței utilizatorului și, de asemenea, îi ajută pe vizitatorii tăi fideli să găsească conținut mai relevant.

Dacă mai aveți îndoieli cu privire la WP_Query sau doriți să adăugați mai multe piese de conținut pe care este posibil să le fi ratat. Vă rugăm să ne anunțați în secțiunea de comentarii de mai jos.