WordPress – Come estrarre gli articoli di una o più categorie

W di Worpress circondato da codice

WordPress ha una funzione automatica per estrarre gli articoli di una categoria. Ma a volte potremmo aver bisogno di farlo tramite una query manuale (1)

WordPress ha integrata una funzionalità automatica che gli permette di stampare a video i post di una categoria. E’ quello che succede ogni volta che cliccate su una categoria.
Ma se dovessimo ricreare noi la query per estrarre gli articoli di una specifica categoria, è utile sapere quali tabelle mettere in relazione tra loro.

La query seguente necessita solo di poche modifiche: l’id della categoria (contenuto nella variabile $id_categoria) ed eventualmente il valore del limit (che ora è impostato a 10: modificabile secondo le proprie esigenze).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$id_categoria=20;
$now=gmdate("Y-m-d H:i:s",(time()+(3600)));

$query="SELECT wp_posts.* FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms WHERE";
$query.=" wp_posts.ID=wp_term_relationships.object_id";
$query.=" AND wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id";
$query.=" AND wp_term_taxonomy.taxonomy='category'";
$query.=" AND wp_terms.term_id=".$id_categoria;

$query.=" AND wp_posts.post_date <= '$now'";
$query.=" AND wp_posts.post_type='post'";
$query.=" AND (wp_posts.post_status IN ( 'publish', 'static' ))";
$query.=" AND wp_posts.post_password =''";

$query.=" ORDER BY RAND() LIMIT 10";

Se ci troviamo nella necessità di estrarre gli articoli di più categorie, ci basterà modificare leggermente lo script.
La variabile $id_categoria diventa quindi un array che conterrà gli id delle varie categorie.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$id_categoria=array();
$id_categoria[]=20;
$id_categoria[]=25;
$id_categoria[]=26;
$now=gmdate("Y-m-d H:i:s",(time()+(3600)));

$query="SELECT wp_posts.* FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms WHERE";
$query.=" wp_posts.ID=wp_term_relationships.object_id";
$query.=" AND wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id";
$query.=" AND wp_term_taxonomy.taxonomy='category'";

$query.=" AND wp_terms.term_id IN (";
$inclusi=""; //contiene la stringa degli id
foreach($id_categoria as $value)
	$inclusi.=$value.", ";
$query.=substr($inclusi, 0, -2);
$query.=")";

$query.=" AND wp_posts.post_date <= '$now'";
$query.=" AND wp_posts.post_type='post'";
$query.=" AND (wp_posts.post_status IN ( 'publish', 'static' ))";
$query.=" AND wp_posts.post_password =''";

$query.=" ORDER BY RAND() LIMIT 10";
Copyright immagini

(1) http://maxfoundry.com/blog/this-week-in-wordpress-apr-16-2012/

Etichette:, ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *