Soporte » Plugins y Hacks » Hacks » Consultas SQL en WordPress

  • Resuelto solucions360

    (@solucions360)


    ¡Hola!

    Tengo que implementar los posts de una categoria (tanto los orginales como las revisiones) de un blog en otra web que no está hecha en WordPress. He conseguido hacer la consulta SQL que me extrae los posts de una categoria pero no consigo extraer las revisiones o post «hijo» de una entrada determinada. A parte de inhabilitar las revisiones, ¿alguna idea?

    La consulta es algo así:


    SELECT ID,wp_posts.post_title,wp_posts.post_date,wp_posts.guid FROM wp_term_relationships
    INNER JOIN wp_posts ON ID = wp_term_relationships.object_id
    WHERE wp_term_relationships.term_taxonomy_id = '386'
    AND post_status='publish'
    AND post_type='post'
    ORDER BY post_date
    DESC LIMIT 1

    Y después he probado esto:


    SELECT ID,wp_posts.post_title,wp_posts.post_date,wp_posts.guid FROM wp_posts
    INNER JOIN wp_term_relationships
    WHERE post_status='publish'
    AND post_type='post'
    AND wp_term_relationships.term_taxonomy_id ='386'
    OR
    post_status='inherit'
    AND post_type='revision'
    AND post_parent=ID
    AND wp_term_relationships.term_taxonomy_id = '386'
    GROUP BY (ID)
    ORDER BY post_date
    DESC LIMIT 5

    Gracias!

Viendo 1 respuesta (de 1 total)
  • Moderador Rafa Poveda

    (@bi0xid)

    Buenas.

    Para poder hacer esto en una consulta tienes que poder comparar la tabla consigo misma.

    Es decir, nosotros queremos seleccionar una serie de datos de wp_posts

    SELECT DISTINCT posts.ID, posts.post_title,posts.post_date,posts.guid,posts.post_type FROM wp_posts posts

    que relacionamos con la tabla wp_term_relationships
    INNER JOIN wp_term_relationships rel

    Esos datos anteriors los vamos a cruzar con los datos de wp_posts para poder tener las revisiones de sólo aquellos posts que sean hijos de otros

    LEFT JOIN wp_posts post ON posts.ID = post.post_parent

    Y ahora añadimos nuestras condiciones para los dos: para encontrar los posts, y para encontrar las revisiones

    WHERE (rel.term_taxonomy_id ='386' and posts.post_type= 'post' AND posts.post_status = 'publish') OR (rel.term_taxonomy_id ='386' and posts.post_type= 'revision') ORDER BY (ID) DESC

    La query completa sería:

    SELECT DISTINCT posts.ID, posts.post_title,posts.post_date,posts.guid,posts.post_type FROM wp_posts posts INNER JOIN wp_term_relationships rel LEFT JOIN wp_posts post ON posts.ID = post.post_parent WHERE (rel.term_taxonomy_id ='386' and posts.post_type= 'post' AND posts.post_status = 'publish') OR (rel.term_taxonomy_id ='386' and posts.post_type= 'revision') ORDER BY (post_date) DESC

Viendo 1 respuesta (de 1 total)
  • El debate ‘Consultas SQL en WordPress’ está cerrado a nuevas respuestas.