Come utilizzare la classe WP_Query in WordPress?
Pubblicato: 2024-08-09Cos'è WP_Query?
WP_Query
è una potente classe PHP in WordPress che ti consente di costruire query personalizzate sul set di dati per recuperare post e altri contenuti e visualizzarli sulla pagina. Fornisce un modo flessibile ed efficiente per interagire con il database e recuperare contenuti in base a vari criteri.
Una breve nota su WP_Query
Potresti sapere che WordPress memorizza tutti i dati del tuo sito web come post, pagine, commenti o impostazioni nel database MySQL.
Quindi, per chiunque visiti il tuo sito web, viene immediatamente inviata una richiesta a questo database, recuperando i dati richiesti, siano essi post o pagine da visualizzare sullo schermo.
Ma devi essere sorpreso di sapere che con l'aiuto di WP_Query puoi creare query che possono aiutarti a recuperare informazioni specifiche dal tuo database. Pertanto, ogni volta che qualcuno cerca i tuoi contenuti, WordPress utilizza questa classe integrata.
Senza dubbio, puoi ancora utilizzare SQL per scrivere tutte queste query, ma è piuttosto difficile e non è il modo più semplice per farlo. D'altra parte, WP_Query è molto più semplice.
WP_Query è così utile che puoi creare query personalizzate per visualizzare contenuti specifici sul tuo sito web senza che il visitatore debba cercarli.
In breve, WP_Query è uno strumento che rende più semplice per gli sviluppatori controllare quali contenuti vengono visualizzati sui siti WordPress e come appaiono, senza la necessità di scrivere codici complicati.
Supponiamo di creare un tipo speciale di contenuto in WordPress chiamato "blog". Per mostrare questi post del "blog" sul tuo sito, puoi scrivere una query speciale utilizzando 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
]);
Ora per visualizzare la query richiesta, WP_Query fornisce scorciatoie e funzioni integrate che ti aiutano a personalizzare il loop. Il Loop è un pezzo di codice PHP che WordPress utilizza per visualizzare i post su una pagina.
WordPress elabora e formatta ogni post in base ai criteri impostati in WP_Query (come il tipo di post, il numero di post e la categoria).
Questo potente strumento aiuta gli sviluppatori a personalizzare facilmente il modo in cui i temi WordPress visualizzano i contenuti senza dover scrivere complesse query sul database
Come puoi utilizzare WP_Query?
Ora sai cos'è WP_Query e cosa fa esattamente. Esaminiamo i diversi scenari in cui è possibile utilizzare questo potente strumento.
1. Crea loop in WP_Query
Per prima cosa dovresti capire cos'è Loop. È una parte di WordPress che è altamente reattiva nel recuperare i dati dei post dai dati e visualizzarli sul tuo sito web. Si concentra principalmente sulla decisione dell'aspetto dei tuoi contenuti in base ai modelli del tuo tema.
Cosa può mostrare il Loop sul sito web?
A seconda delle impostazioni scelte, il Loop può visualizzare:
- Tipi di post personalizzati e campi personalizzati
- Pubblica titoli e brevi descrizioni sulla tua home page
- Il contenuto e i commenti di un singolo post
- Contenuto di singole pagine utilizzando tag modello
Per una migliore comprensione, di seguito è riportata una semplice struttura di Loop.
Esempio di ciclo di base
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
- Qui, la funzione
have_posts()
controlla se ci sono post disponibili. -
while ( have_posts() ) : the_post();
: se sono presenti post, questo ciclo verrà eseguito per ciascun post e ne visualizzerà il contenuto.
Personalizzare il Loop con WP_Query
A volte, non vuoi visualizzare tutti i tuoi post. Puoi utilizzare WP_Query per personalizzare ciò che viene mostrato:
<?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();
?>
Come funziona questo ciclo personalizzato
- Impostazione della query :
$the_query = new WP_Query( $args );
crea una query personalizzata in base ai parametri impostati (come tipo di post, categoria, ecc.). - Running the Loop :
if ( $the_query->have_posts() ) { ... }
controlla se ci sono post che corrispondono alla tua query. Se ce ne sono, visualizza il titolo di ciascun post in un elenco. - Reimpostazione dei dati del post :
wp_reset_postdata();
garantisce che i dati del post originale vengano ripristinati dopo l'esecuzione del ciclo personalizzato.
Opzioni di personalizzazione
Con WP_Query puoi:
- Mostra post di una categoria, autore o intervallo di date specifico
- Visualizza post con determinati tag o campi personalizzati
2. Argomenti WP_Query
Quando desideri ottenere post specifici dal tuo sito WordPress, devi creare WP_Query e per questo devi includere quattro parti fondamentali:
- Argomento della query : indica a WordPress quali dati recuperare.
- La query : utilizza l'argomento per recuperare i dati.
- The Loop : elabora e visualizza ogni post.
- Post Data Reset : reimposta i dati dopo l'esecuzione del ciclo.
Ma uno dei componenti più essenziali di WP_Query è l'argomento (spesso chiamato WP_Query args) che è responsabile dell'estrazione del post specifico che desideri ottenere dal database.
È così importante che invece di mostrare tutti i post, l'argomento imposta le condizioni per mostrare solo determinati post.
Esempio di argomento
- La riga
$args
: qui è dove includi l'argomento della query. - Struttura : inserisci determinati parametri in un array. Ecco un esempio di base,
$args = array(
'parameter1' => 'value',
'parameter2' => 'value',
'parameter3' => 'value'
);
Esempio specifico
Se desideri visualizzare i post con il tag "Errori WordPress", imposteresti l'argomento della query in questo modo:
$query = new WP_Query( array( 'tag' => 'WordPress Errors' ) );
Perché l'argomento è essenziale
- Nessun argomento, nessun contenuto : se non includi un argomento WP_Query, WordPress non saprà quali post visualizzare. La tua query non recupererà alcun contenuto dal database.
3. Imposta i parametri WP_query
I parametri sono qualcosa che rende WP_Query utile e potente. Con la varietà di essi disponibili è diventato facile per chiunque filtrare le ricerche nel database.
Ad esempio, quando desideri mostrare post specifici sul tuo sito WordPress, utilizzi WP_Query e per assicurarti di ottenere il post giusto, puoi impostare i parametri. Potresti avere un'altra domanda in mente: quali sono i parametri?
Bene, i parametri sono proprio come le istruzioni che dicono a WordPress che tipo di post ottenere dal database.
Esempi di parametri comuni
Ecco alcuni parametri comuni che puoi utilizzare:
- cat : visualizza i post di categorie specifiche.
- autore : mostra i post di uno o più autori specifici.
- post_status : mostra i post in corso, programmati, pubblicati o eliminati.
- orderby : ordina i post per autore, tipo di post, data, ecc.
- posts_per_page : imposta il numero di post da visualizzare.
- tag : mostra i post con tag specifici.
- ordine : ordina i post in ordine crescente o decrescente.
- post_type : definisce se mostrare post, pagine o tipi di post personalizzati.
Come utilizzare i parametri
Se desideri mostrare i post di una determinata categoria, puoi utilizzare il parametro category_name
. Ecco un esempio:
$query = new WP_Query( array( 'category_name' => 'WordPress' ) );
Verranno visualizzati tutti i post nella categoria "staff" e le eventuali sottocategorie.
Esempio più complesso
In questo esempio, dimostriamo come utilizzare più valori in diversi argomenti per creare una query complessa e personalizzata per recuperare esattamente i post desiderati.
Recupereremo i post che appartengono a categorie specifiche, hanno determinati tag, sono scritti da autori specifici e sono ordinati per data in ordine decrescente.
$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();
- Category__in : aiuta a specificare che vogliamo post di categorie con ID 5 e 10.
- tag__in : specifica che vogliamo che i post siano taggati con "in primo piano" o "popolare".
- autore__in : specifica che vogliamo post di autori con ID 1 e 2.
- orderby : specifica che vogliamo ordinare i post in base alla data in cui sono stati pubblicati.
- order : specifica che vogliamo i post in ordine decrescente (prima il più recente).
- posts_per_page : limita il numero di post recuperati a 10.
4. Modifica oggetti con metodi e proprietà di classe
In WordPress, WP_Query
è una classe PHP speciale utilizzata per recuperare i post dal database. Consideralo come uno strumento che ti aiuta a ottenere esattamente i post che desideri mostrare sul tuo sito web.
Cosa sono le proprietà e i metodi delle classi?
In PHP, una classe può avere proprietà (come variabili) e metodi (come funzioni). Ecco un modo semplice per capirli:
- Proprietà : sono come contenitori che contengono informazioni. Nel contesto di
WP_Query
, le proprietà potrebbero includere cose come l'elenco dei post o il numero di post trovati. - Metodi : sono strumenti o azioni che puoi eseguire. In
WP_Query
, i metodi possono aiutarti a verificare se ci sono post, ottenere il titolo di un post o reimpostare la query.
Puoi modificare direttamente le proprietà?
No, non è possibile modificare direttamente le proprietà, anche gli sviluppatori lo sconsigliano vivamente, ma è possibile utilizzare i metodi in alternativa.
I metodi sono proprio come strumenti o comandi ufficiali che ti aiutano a seguire la strada giusta. Questi sono esattamente ciò che funziona come le funzioni, quando apporti determinate modifiche ai metodi di WP_Query, puoi anche personalizzare i dati recuperati.
Esempio di utilizzo dei metodi in WP_Query
In questo esempio, una funzione reset_postdata() può essere un passaggio fondamentale nella scrittura della tua WP_Query. Questo metodo ripristinerà le proprietà di $current_post e $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; ?>
Guasto:
- Creazione di una query :
-
$the_query = new WP_Query($args);
: Crea un nuovo oggettoWP_Query
con gli argomenti forniti.
-
- Controllo dei post :
-
if ($the_query->have_posts())
: controlla se ci sono post da mostrare in base alla tua query.
-
- Scorrendo i post :
-
while ($the_query->have_posts()) : $the_query->the_post();
: imposta i dati del post in modo da poterli visualizzare.
-
- Visualizzazione dei post :
-
the_title();
ethe_excerpt();
: Visualizza il titolo e l'estratto del post corrente.
-
- Reimpostazione dei dati del messaggio :
-
wp_reset_postdata();
: reimposta i dati del post globale sul post della query principale. Questo è importante per evitare di rovinare altre parti della tua pagina.
-
Metodi comuni che è possibile utilizzare
Ecco alcuni metodi comuni in WP_Query
che puoi utilizzare per lavorare con la tua query:
-
get_posts
:- Cosa fa : recupera un elenco di post.
- Esempio : codice phpCopy
$posts = get_posts(array('category' => 'news'));
-
have_posts
:- Cosa fa : controlla se ci sono post da visualizzare.
- Esempio : codice phpCopy
if ($the_query->have_posts()) { // There are posts to show }
-
the_post
:- Cosa fa : imposta i dati del post corrente.
- Esempio : codice phpCopy
$the_query->the_post();
-
fill_query_vars
:- Cosa fa : completa i dettagli della query mancanti.
- Esempio : codice phpCopy
$the_query->fill_query_vars($args);
Fornendo a WP_Query le informazioni giuste, puoi personalizzarlo per eseguire attività diverse. Questo metodo è un modo flessibile e sicuro per modificare le proprietà della classe.
WP_Query Vs query_posts(): quale è preferibile?
Di seguito è riportata una tabella comparativa dettagliata tra WP_Query
e query_posts()
in WordPress, inclusi alcuni dei punti principali che possono aiutarti a capire perché WP_Query
è generalmente preferito a query_posts()
:
Caratteristica | WP_Query | query_posts() |
---|---|---|
Scopo | Crea query personalizzate per recuperare i post dal database. | Modifica la query principale sulla pagina (non consigliato per uso generale). |
Utilizzo principale | Ideale per creare nuove query e visualizzare i post in modo personalizzato. | Generalmente utilizzato per modificare la query principale ma non è consigliato. |
Uso consigliato | Sì, è il modo consigliato per recuperare e visualizzare i post. | No, è meglio evitare di utilizzare questa funzione all'interno del Loop principale, dei plugin e dei temi. |
Effetto sulla query principale | Non influisce sulla query principale. Puoi eseguire query personalizzate senza modificare il Loop principale. | Sostituisce completamente la query principale, il che può causare conflitti o risultati imprevisti. |
Reimpostazione dei dati del post | Utilizza wp_reset_postdata() per ripristinare la query originale dopo aver eseguito una query personalizzata. | Nessuna funzione equivalente, il che significa che potresti dover ripristinare manualmente i dati del post della query principale. |
Gestione di query multiple | Può gestire più query ed è progettato per scenari complessi. | Gestisce solo una query e modifica la query principale, il che può risultare problematico per più query. |
Impatto sulle prestazioni | Generalmente migliore per le prestazioni poiché non altera la query principale. | Può essere meno efficiente e causare problemi a causa del suo impatto sulla query principale. |
Esempi di query personalizzate | $custom_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5)); | query_posts(array('post_type' => 'post', 'posts_per_page' => 5)); |
Esempio di reimpostazione dei dati | <?php wp_reset_postdata(); ?> | Nessuna funzione di ripristino, è necessario un ripristino manuale se vengono apportate modifiche alla query principale. |
Facilità d'uso | Facile da usare con metodi e funzioni integrati per interrogare post e pagine. | Meno semplice e può causare problemi se non utilizzato con attenzione. |
Alcuni esempi di utilizzo di WP_Query
Per comprendere meglio WP_Query e il suo utilizzo pratico, consulta alcuni degli esempi forniti di seguito:
1. Mostra gli ultimi post pubblicati questa settimana
Se hai una buona base di utenti o una discreta quantità di traffico web, significa che ai tuoi visitatori piacciono i tuoi contenuti e vorrebbero leggere gli ultimi articoli pubblicati sul tuo sito.
Durante la progettazione del tuo sito web, puoi presentare i post recenti in una sezione dedicata della pagina web. Per fortuna, con WP_Query, puoi trovare facilmente post in base ai parametri della data. Vediamo come.
<?php
$arguments = array(
"date_query" => array(
array(
"year" => date( "Y" ),
"week" => date( "W" ),
)
)
);
$posts = new WP_Query($arguments);
?>
In questo esempio, creiamo una WP_Query per trovare i post pubblicati nella settimana corrente. Usiamo una parte speciale di WP_Query chiamata date_query
per specificare i nostri criteri di ricerca.
Lo scopo principale della query era trovare i post pubblicati durante la settimana corrente. E per questo abbiamo utilizzato il parametro date_query per cercare post in base alle date. Richiede una serie di argomenti relativi alla data.
Pertanto, quando personalizzi il parametro date_query
, puoi recuperare e visualizzare i post che sono stati pubblicati di recente. Tuttavia, sei anche libero di specificare valori personalizzati per rendere la query più efficace ed evidenziare gli ultimi articoli scritti nell'ultima settimana.
2. Mostra l'ultimo post in una categoria specifica
I visitatori del tuo sito web potrebbero spesso cercare le informazioni più recenti e per aumentare il coinvolgimento e le visualizzazioni di pagina, è buona norma suggerire alcuni post correlati che potrebbero interessargli.
Sebbene ci siano molti modi per collegare post correlati in WordPress, WP_Query è uno dei modi efficaci per farlo. Soprattutto un ottimo modo per il sito Web che pubblica sempre contenuti aggiornati.
Ad esempio, se qualcuno legge un articolo sugli errori di WordPress, WP_Query può aiutare a mostrare altri articoli simili e recenti.
Pertanto, se desideri recuperare gli ultimi post in una categoria specifica, utilizza questa WP_query e apporta piccole modifiche che includano le informazioni del tuo sito:
<?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. Mostra i post dello stesso autore e nella stessa categoria
È altamente possibile che se al visitatore piacciono i tuoi contenuti, potrebbero apprezzare anche le opinioni, lo stile di scrittura e la percezione dell'autore.
Per questo, puoi utilizzare WP_Query per suggerire ai tuoi lettori post simili scritti dallo stesso autore. La query cercherà i post scritti dallo stesso autore per la stessa categoria del post corrente.
Per questo, dobbiamo creare una stringa WP_Query specifica, che cercherà i post con autori simili e la stessa categoria.
Ecco il codice:
<?php
$arguments = array(
"author_name" => "Rahul",
"category_name" => "WordPress",
"posts_per_page" => 3,
);
$posts = new WP_Query($arguments);
?>
Nel codice sopra, devi sostituire “Rahul” con il nome dell'autore e “WordPress” con il nome della categoria.
4. Mostra i tuoi post più popolari
Proprio come i post più recenti o recenti che hai mostrato ai tuoi lettori. potresti anche voler mostrare post su argomenti che piacciono ai tuoi lettori e che coinvolgono molto. Per ottenere ciò, puoi utilizzare il parametro orderby e passarlo all'argomento comment_count .
<?php
$arguments = array(
"category_name" => "WordPress Errors",
"orderby" => "comment_count",
"posts_per_page" => 5,
);
$posts = new WP_Query($arguments);
?>
La WP_Query sopra cercherà i post nella categoria "Errori WordPress" e filtrerà i risultati in base al numero di commenti di ciascun post.
L'output mostrerà cinque post con il maggior numero di commenti, in ordine decrescente da sinistra a destra, iniziando dal post con il maggiore coinvolgimento e finendo con il minore.
Conclusione
Ora hai visto quanto è potente WP_Query e come ti semplifica l'esecuzione di richieste al database in WordPress. Inoltre, fornisci la flessibilità necessaria per personalizzare il tuo sito e offrire un'esperienza unica ai visitatori.
Per utilizzare WP_Query, puoi:
- Crea un loop: mostra i tuoi post.
- Utilizza argomenti di query: personalizza le tue ricerche.
- Imposta parametri specifici: filtra i risultati.
- Modifica proprietà classe: modifica i risultati della query con i metodi.
Se hai padroneggiato tutte queste tecniche, sarai in grado di consigliare facilmente post specifici in base a vari fattori come popolarità e data.
Questa tecnica aiuta ad aumentare il coinvolgimento dell'utente, a migliorare l'esperienza dell'utente e anche ad aiutare i tuoi visitatori fedeli a trovare contenuti più pertinenti.
Se hai ancora dubbi su WP_Query o desideri aggiungere altri contenuti che potremmo aver perso. Fatecelo sapere nella sezione commenti qui sotto.
Rahul Kumar è un appassionato di web e content strategist specializzato in WordPress e web hosting. Con anni di esperienza e l'impegno a rimanere aggiornato sulle tendenze del settore, crea strategie online efficaci che indirizzano il traffico, aumentano il coinvolgimento e aumentano le conversioni. L'attenzione ai dettagli e la capacità di creare contenuti accattivanti di Rahul lo rendono una risorsa preziosa per qualsiasi marchio che desideri migliorare la propria presenza online.