Il Codex di WordPress, si sa, è una miniera inesauribile di informazioni per usare al meglio questo potente strumento di pubblicazione. Una delle funzioni più importanti e potenti (e meno documentate) a mio avviso è la funzione setup_postdata.
Grazie a questa funzione è possibile utilizzare delle query SQL personalizzate per ottenere delle viste dati che il classico loop di WordPress non sarebbe in grado di gestire. Per utilizzare questa funzione è necessario modificare la classica struttura del loop di wordpress facendolo diventare simile a questo:
posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'tag'
AND wpostmeta.meta_value = 'email'
AND wposts.post_status = 'publish'
AND wposts.post_type = 'post'
ORDER BY wposts.post_date DESC
";
// # Estraiamo i dati tramite la classe db di WordPress
$pageposts = $wpdb->get_results($querystr, OBJECT);
?>
Oooops
D'oh! dove diamine sono gli articoli?
Vediamo come funziona il tutto in dettaglio:
1. Scriviamo la nostra fantastica ed utilissima query SQL
2. Creiamo il nostro oggetto “$postdata” usando la classe layer di gestione database integrata in WordPress
3. Modifichiamo il loop in modo da sostituire il while con un foreach e chiamiamo ad ogni iterazione la funzione setup_postdata prima di gestire/stampare qualunque dato
Per i campi standard del post ovviamente sarà possibile usare le funzioni template classiche di WordPress (the_content, the_title, the_time etc) mentre per richiamare i campi non standard (quelli estratti tramite la nostra query personalizzata) sarà sufficiente usare le proprietà dell’oggetto $post (esempio $post->mio_campo_estratto_con_la_custom_query)
Approfondimenti:
http://justinvincent.com/docs/ezsql/ez_sql_help.htm [English]
http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query [English]