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"; |
(1) http://maxfoundry.com/blog/this-week-in-wordpress-apr-16-2012/