¿Alguien puede proporcionar un ejemplo de SQL RAW para SELECCIONAR publicaciones por 2 o más etiquetas?
Necesito un SQL RAW, ya que estoy trabajando desde una plataforma diferente con la base de datos de WordPress.
Cuando ejecuto example.com/tag/first+second
, WordPress ejecuta una consulta SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (10649,7783,6336,4556,3938)
¿De dónde obtuvo estos IDs de publicación? Solo estoy especulando. Tengo algunas ideas al respecto, pero primero quiero ver si alguien lo sabe.
Aquí está la consulta que he construido para obtener publicaciones por UNA SOLA etiqueta:
SELECT `wp_posts`.`ID`, `wp_posts`.`post_name`, `wp_posts`.`post_title`, `wp_posts`.`post_date`, `wp_posts`.`post_content` , DATEDIFF(CURDATE(),post_date) as days_ago
FROM `wp_posts`
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy
ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
INNER JOIN wp_terms
ON (wp_term_taxonomy.term_id = wp_terms.term_id)
WHERE 1=1
AND wp_term_taxonomy.taxonomy = 'post_tag'
AND wp_terms.slug SOUNDS LIKE 'Hennessy'
AND wp_terms.slug SOUNDS LIKE 'VS'
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish')
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
gracias.

Parece que estás capturando la consulta incorrecta. Al volcar el SQL para dicha URL (mediante el filtro posts_request
) me muestra esto:
SELECT SQL_CALC_FOUND_ROWS wp_posts.*
FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_relationships AS tt1 ON (wp_posts.ID = tt1.object_id)
WHERE 1=1
AND ( wp_term_relationships.term_taxonomy_id IN (93) AND tt1.term_taxonomy_id IN (94) AND wp_posts.ID IN (
SELECT object_id
FROM wp_term_relationships
WHERE term_taxonomy_id IN (93,94)
GROUP BY object_id HAVING COUNT(object_id) = 2
) )
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
En cualquier caso, revisa el método WP_Query->get_posts()
, que se encarga de convertir las variables de consulta en SQL. Hay mucho código ahí y gran parte fue modificado en la versión 3.1, por lo que me resulta un poco difícil identificar exactamente dónde se manejan múltiples etiquetas.

Sí, tienes razón, tengo una consulta ligeramente diferente, pero incluso con la que mencionaste, no puedo usarla para seleccionar múltiples "etiquetas"

@simple ¿La URL example.com/tag/first+second
obtiene lo que necesitas? Solo conecta a posts_request
y vuelca la consulta que genera, como hice yo. ¿Necesitas ayuda con eso?

@Rast sí obtiene resultados, pero ejecuta una consulta similar a "SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (10649,7783,6336,4556,3938)"
, ¡Pero lo que necesito es obtener esos post_id! También los verifico contra Soundex, así que el caso se vuelve un poco más divertido. ¿Alguna idea sobre cómo volcar todas las consultas que WordPress ejecuta por cada solicitud?

@simple Esa consulta ni siquiera es una consulta para publicaciones, es una consulta para campos personalizados. No estoy seguro de qué tiene que ver con nada, como se mencionó anteriormente, por favor intenta volcar el filtro posts_request
si necesitas la consulta que se ejecuta para recuperar las publicaciones.
