2010-05-17 3 views
11

Al momento sto visualizzando un elenco delle ultime 5 messaggi nel blog di un sito nel suo piè di pagina usando questa query mysql:In che modo Wordpress collega i post alle categorie nel suo database?

SELECT post_title, guid, post_date FROM wp_posts WHERE post_type = 'post' AND post_status = 'Publish' ORDER BY post_date DESC LIMIT 5 

Come posso modificare la query per limitare la ricerca a una categoria particolare id? Ho pensato che sarebbe stato semplice come cercare un campo categoria nella tabella dei post, ma non lo è!

risposta

20

Le relazioni del database Wordpress sono disponibili nello database diagram.

Nel tuo caso particolare è:

wp_posts.ID
->wp_term_relationships.object_id
->wp_term_relationships.term_taxonomy_id
->wp_term_taxonomy.term_taxonomy_id
->wp_term_taxonomy.term_id
->wp_terms.term_id

Per l'interrogazione è necessario utilizzare un join SQL:

Ma va notato che il database wordpress potrebbe cambiare in qualsiasi momento, e si dovrebbero usare i meccanismi forniti da Wordpress (come query_posts) per filtrare i post dal database.

+4

Grazie per la risposta. Giocherò sul sicuro, includerò le funzioni e useremo invece. Per i futuri utenti: per utilizzare le funzioni wp esternamente: includere 'path-to-wp-directory/wp-blog-header.php' – bcmcfc