2010-05-17 20 views
11

En la actualidad estoy mostrando una lista de los últimos 5 mensajes en el blog de un sitio en su pie de página usando esta consulta mysql:¿Cómo enlaza Wordpress las publicaciones a categorías en su base de datos?

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

¿Cómo puedo editar esta consulta para restringir la búsqueda a un identificador de categoría en particular? ¡Pensé que sería tan simple como buscar un campo de categoría en la tabla de publicaciones, pero no lo es!

Respuesta

20

Las relaciones de la base de datos de Wordpress están disponibles en el database diagram.

En su caso particular es:

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

para consultar lo que necesita utilice una combinación de SQL:

SELECT p.ID, t.term_id 
FROM wp_posts p 
LEFT JOIN wp_term_relationships rel ON rel.object_id = p.ID 
LEFT JOIN wp_term_taxonomy tax ON tax.term_taxonomy_id = rel.term_taxonomy_id 
LEFT JOIN wp_terms t ON t.term_id = tax.term_id 

Pero cabe señalar que la base de datos de wordpress puede cambiar en cualquier momento, y debe utilizar los mecanismos proporcionados por Wordpress (como query_posts) para filtrar las publicaciones de la base de datos.

+4

Gracias por la respuesta. Voy a ir a lo seguro, incluiré las funciones y las usaré en su lugar. Para buscadores futuros: para usar las funciones wp externamente: incluye 'ruta-a-directorio-wp/wp-blog-header.php' – bcmcfc

Cuestiones relacionadas