Hace un par de meses necesitaba hacer algunas consulta de las entradas de un blog por categoría, al no encontrar mucha información al respecto publiqué el Diagrama de la Base de Datos de WordPress en mi blog, esta entrada es para complementar un poco el anterior post.
Las etiquetas y las categorías se guardan en la tabla wp_terms por lo que si necesitamos generar una lista de únicamente las categorías necesitamos hacer la siguiente consulta:
SELECT wp_terms.term_id, wp_terms.name, wp_terms.slug FROM wp_term_taxonomy LEFT OUTER JOIN wp_terms ON wp_terms.term_id = wp_term_taxonomy.term_id WHERE (wp_term_taxonomy.taxonomy = 'category') |
Una consulta más completa que nos regrese el id, nombre, descripción, slug y número de entradas de una categoría sería como la siguiente:
SELECT wp_terms.term_id, wp_terms.name, wp_terms.slug, wp_term_taxonomy.taxonomy, wp_term_taxonomy.description, wp_term_taxonomy.count FROM wp_term_taxonomy LEFT OUTER JOIN wp_terms ON wp_terms.term_id = wp_term_taxonomy.term_id WHERE (wp_term_taxonomy.taxonomy = 'category') ORDER BY wp_terms.name |
Finalmente para tener una lista de las entradas o post, con estatus de publicado, con su id, título, fecha, categoría y autor necesitamos hacer la siguiente consulta:
SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_date, wp_terms.name, wp_users.user_nicename FROM wp_term_taxonomy LEFT OUTER JOIN wp_terms ON wp_terms.term_id = wp_term_taxonomy.term_id RIGHT OUTER JOIN wp_term_relationships ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id RIGHT OUTER JOIN wp_posts ON wp_posts.ID = wp_term_relationships.object_id LEFT OUTER JOIN wp_users ON wp_users.ID = wp_posts.post_author WHERE (wp_term_taxonomy.taxonomy = 'category') AND (wp_posts.post_type = 'post') AND (wp_posts.post_status = 'publish') ORDER BY wp_posts.post_date DESC |
Esta última consulta tiene el detalle de que si una entrada pertenece a varias categorías generará un registro por cada una de las categorías a la que pertenezca.
He hecho algunas otras consultas un poco más elaboradas de la base de datos de WordPress así que las publicaré poco a poco en mi blog. Se aceptan las dudas y comentarios 🙂
Pingback: Diagrama de la Base de Datos de WordPress | David Austria
Muy buenas consultas! a Favoritos!
Excelente nota David, ahora bien, te hago una consulta a ver si me ayudas a darle una vuelta mas:
Tengo muchísimas notas que agregue directamente en la base, gracias a una migración cacera desde otro sistema. Todas estas notas son de una categoria, la 43 que pude identificar gracias a esta nota tuya ;P.
Entonces, lo que quiero, es setearle la categoria a todos los post cuyo id es mayor a 1000, algo asi.
¿donde lo tendría que insertar?
desde ya, muchísimas gracias.
Hola, Me sirvió el post.
Pero me podrían pasar el código php de como seria para exportar los datos a la pagina, con los post de una categorías.
Por ejemplo. quiero exportar una categoría (deportes). que esta dentro de “wp_terms” de la base de dato, y quiero que salga los últimos post que se realicen en esa categoría, Titulo, Imagen, Autor, y contenido.
Será posible que me pasen el código? o decirme como se hace.
Desde ya gracias…
buen post, gracias por el aporte
Muchas gracias! me han sido de mucha ayuda!
Muy buena Info, clara y precisa!!!GRACIAS!!
perfecto, gracias!
Excelente aporte, ahora bien, mi consulta es como puedo hacer para obtener todo lo que tiene la ultima consulta de este post PERO de una categoria especifica?