Tag Template: query_posts
1. Descrizione
Query_posts viene utilizzato per controllare quali articoli visualizzare ne Il Loop. Accetta una varietà di parametri nel medesimo formato utilizzato nelle URL. (es. p=4 per mostrare solo l'articolo con ID 4)
Perché incorrere in tutti i problemi di una modifica della query così meticolosamente creata dalla vostra URL? La possibilità di personalizzare la presentazione delle voci del vostro blog combinandole con la logica della pagina (ad esempio tramite i Tag Condizionali) -- il tutto senza dover modificare nessuna URL.
Utilizzi comuni possono essere:
- Visualizzare un singolo articolo o pagina nella vostra homepage.
- Mostrare tutti glia articoli per un determinato periodo di tempo.
- Visualizzare (solo) l'ultimo articolo nella pagina iniziale.
- Modificare l'ordine degli articoli.
- Visualizzare gli articoli di una sola categoria.
2. Utilizzo
Inserire una chiamata a query_posts() in uno dei vostri file di Template prima dell'inizio de Il Loop. L'oggetto wp_query genererà una nuova query SQL utilizzando i vostri parametri.
WordPress ignorerà quindi gli altri parametri ricevuti tramite la URL (quale ad esempio il numero di pagina o la categoria).
3. Esempi
3.1 Escludere Una Categoria Dalla Home Page
Inserendo questo codice nel file index.php si farà si che la pagina iniziale visualizzi solo gli articoli di tutte le categorie eccetto la categoria di ID 3.
<?php
if (is_home()) {
query_posts("cat=-3");
}
?>
3.2 Recuperare una Pagina Specifica
Per recuperae una pagina specifica, è possibile utilizzare il seguente codice:
<?php
query_posts('page_id=7'); //recupera solol a pagina di ID 7
?>
oppure
<?php
query_posts('pagename=about'); //recupera solo la pagina di nome about
?>
3.3 Escludere Più Categorie
Nota: Non è possibile escludere più di una categoria tramite query_posts. Tuttavia è possibile ricorrere a dei trucchi o a dei plugin. Ad esempio è possibile utilizzare if/else nel loop per trovare le categorie da escludere ed eliminarle, ecco un esempio:
<?php query_posts('cat=-1'); // esclude laprima categoria ?>
<?php while (have_posts()) : the_post(); // avvio del Loop ?>
<?php if ( in_category(2) ) {
// ignora la categoria 2 e non fa altro, proseguendo
} else { ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <br />
<?php endif; endwhile; ?>
3.4 Passare variabili a query_posts
È possibile passare una variabile alla query con due metodi, a seconda delle necessità. Come negli esempi precedenti inserire il codice prima del Loop:
Esempio 1
In questo esempio, si concateneranno le query prima di eseguirle. Per prima cosa assegnare la variabile, quindi concatenarla ed eseguirla. I questo esempio ricaviamo una variabile di categoria da qualche altra parte.
<?php $categoryvariable=($cat); // assegna alla variabile la categoria $query= 'cat=' . $categoryvariable. '&orderby=date&order=ASC'; // concatena la query query_posts($query); // esegue la query ?>
Esempio 2
In questo esempio i doppi " apici " indicano a PHP di trattare il contenuto come una espressione. Per questo esempio ricaviamo il mese e l'anno corrente e indichiamo a query_posts di estrarre solo glia articoli per il mese/anno corrente, inoltre, l'elenco sarà ascendente così da avere per primo l'articolo più vecchio.
<?php $current_month = date('m'); ?>
<?php $current_year = date('Y'); ?>
<?php query_posts("cat=22&year=$current_year&monthnum=$current_month&order=ASC"); ?>
4. Parametri
Non si tratta di un elenco esaustivo. Ha lo scopo di mostrare le cose più comuni per la realizzazione di query.
4.1 Parametri Categorie
Mostra articoli che appartengono a determiante categorie.
-
cat -
category_name
Mostra Una Categoria per ID
Visualizza gli articoli della sola categoria ID:
query_posts('cat=4');
Mostra Una Categoria per Nome
Visualizza gli articoli della sola categoria per nome:
query_posts('category_name=Staff Home');
Mostra Diverse Categorie per ID
Visualizza glia articoli da diverse categorie specificate tramite ID:
query_posts('cat=2,6,17,38');
Esclude gli Articoli Appartenenti ad Una Categoria
Mostra tutti gli articoli eccetto quelli di una categoria facendo precedere l'ID dal segno '-' (meno).
query_posts('cat=-3');
Questo codice esclude glia articoli che appartengono solo alla categoria 3. Vi è una particolarità: esclude tutti gli articoli che appartengono solo alla categoria 3. Se un articolo appartiene anche ad un'altra categoria, verrà comunque visualizzato.
4.2 Parametri Autore
È possibile limitare gli articoliper autore.
-
author_name=Harriet -
author=3
author_name opera sul campo user_nicename, mentre author opera sull'ID autore.
4.3 Parametri Articolo & Pagina
Recupera un singolo articolo o pagina.
-
p=1- utilizza l'ID dell'articolo per mostrare il primo articolo -
name=first-post- utilizza il Post Slug per mostrare il primo articolo -
page_id=7 -
pagename=about -
showposts=1(è possibile utilizare ancheshowposts=3, o qualsiasi altro numero per visualizzare un numero limitato di articoli
Come conseguenza della Gerarchia dei Template, home.php viene eseguita per prima. Ciò significa che è possibile scrivere una home.php che richiama query_post() per recuperare una pagina particolare ed impostarla come pagina iniziale. Senza nessun plugin o hack, avete un metodo, per visualizzare e mantener una pagina iniziale che non appartenga al blog.
Ancora più utile è forse trarre vantaggio della nuova funzionalità di Pagina ed utilizzarla come pagina principale. È possibile impostare la pagina "about page" come punto di ingresso o come colophon del vostro sito. È possibile anche realizzare qualche cosa di più dinamico ed impostare una pagina personalizzata che elenchi gli utlimi commenti, articoli, categorie ed archivi. Si veda l'esempio seguente.
4.4 Parametri di Tempo
Recupera gli articoli che appartengono ad un determinato periodo di tempo.
-
hour= -
minute= -
second= -
day=- giorno del mese; mostra tutti gli articoli scritte, ad esempio il 15. -
monthnum= -
year=
4.5 Parametri Pagina
-
paged=2- mostra gli articoli che verebbero normalmente visualizzati nella seconda pagina utilizzando il link "Articoli Precedenti". -
posts_per_page=10- numero di articoli da mostrare per ogni pagina; un valore di -1 mostra tutti gli articoli. -
order=ASC- mostra glia rticoli in ordine cronologico, DESC li visualizza in ordine inverso (predefinito)
4.6 Combinare i Parametri
I parametri vengo combinati utilizzando un ampersand (&) fra i vari parametri, come in questo esempiolike this:
query_posts('cat=3&year=2004');
5. Risorse
- If..Else - Query Post Redux
- If..Else - Make WordPress Show Only one Post on the Front Page
- If..Else - Query Posts
- Sporadic Nonsense - Article Management with WordPress
6. Correlati
bloginfo, wp_title, get_archives, wp_get_archives, get_calendar, wp_list_pages (1.5), wp_loginout (1.5), wp_register (1.5), query_posts (1.5), rss_enclosure (1.5)