Abbiamo visto e spiegato il wordpress loop e come creare un template di pagina wordpress. Ora possiamo quindi passare ad analizzare come visualizzare gli ultimi articoli con una query wordpress personalizzata. In alcuni casi infatti potrebbe verificarsi la necessità di creare una pagina che mostri solo gli articoli di una o più categorie oppure solo gli articoli scritti da un determinato autore oppure ancora solo gli articoli scritti in un determinato lasso di tempo.
Tutto ciò è reso possibile attraverso la definizione di alcuni parametri che ci permetteranno di stabilire delle regole ben precise che verrano utilizzate per filtrare gli articoli presenti sul nostro blog o sito.
Su internet per fortuna esiste un tool molto utile per generare una query wordpress personalizzata: Generatewp. Ma vi consiglio di seguire l’esempio sottostante per capire la struttura del codice prima di passare all’utilizzo del tool. Ciò vi permetterà di correggere eventuali errori e soprattutto vi farà acquisire le conoscenze necessarie a far si che il tool diventi realmente utile solo nei casi molto complessi.
QUERY WORDPRESS PERSONALIZZATA – UN ESEMPIO
Nell’esempio che segue troverete una query wordpress che mostrerá i post appartenenti alla categorie con ID 5,7 e 11 ordinati per data e mostrando 8 post per pagina.
<?php
// WP_Query arguments
$args = array (
'cat' => '5,7,11',
'pagination' => true,
'posts_per_page' => '8',
'order' => 'DESC',
'orderby' => 'date',
);
// The Query
$my_query = new WP_Query( $args );
// The Loop
if ( $my_query->have_posts() ) {
while ( $my_query->have_posts() ) {
$my_query->the_post();
// do something
}
}
// Restore original Post Data
wp_reset_postdata();
?>
Come possiamo vedere all’inizio del nostro codice viene definito l’array $args il quale conterrá i valori che andranno a comporre la nostra query. Una lista di tutti i parametri definibili è disponibile nella pagina relativa alla classe wp_query nel codex wordpress.
Dal momento che WP_Query è una classe verrà creata una nuova istanza della stessa mediante l’operatore new. A questo punto la nostra query wordpress personalizzata presenta una condizione if e un cliclo while molto simili a quelli che abbiamo già visto nel loop wordpress. La differenza in questo caso è che siamo noi ad indicare dove cercare gli articoli in base ai parametri definiti nell’array $args.
Subito dopo l’introduzione del ciclo while troverete //do something. Qui dovrete inserire il codice html e i template tag di wordpress che mostreranno le informazioni relative a ciascun articolo. Un esempio potrebbe essere:
//Chiudo il tag php per scrivere del codice HTML
?>
<ul>
<?php
// Riapro il tag php e inizio il Loop
if ( $my_query->have_posts() ) {
while ( $my_query->have_posts() ) {
$my_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
}
} ?>
</ul>
QUERY WORDPRESS PERSONALIZZATA – IL CODICE FINALE
Il codice qui sopra quindi mostrerà una lista con i titoli degli ultimi articoli. In definitiva il codice finale sarà:
<?php
// WP_Query arguments
$args = array (
'cat' => '5,7,11',
'pagination' => true,
'posts_per_page' => '8',
'order' => 'DESC',
'orderby' => 'date',
);
// The Query
$my_query = new WP_Query( $args );
//Chiudo il tag php per scrivere del codice HTML
?>
<ul>
<?php
// Riapro il tag php e inizio il Loop
if ( $my_query->have_posts() ) {
while ( $my_query->have_posts() ) {
$my_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
}
} ?>
</ul>
<?php
// Restore original Post Data
wp_reset_postdata();
?>
Naturalmente potete rimpiazzare il codice html che ho inserito con il vostro ricordandovi però di utilizzare i template tag di wordpress che trovate qui.