salut,
il faut une relation entre les deux requêtes or la il n'y a pas.
tu peux modifier ton code pour utiliser du SQL plus classique afin de rendre plus clair la lecture (en clair supprimer la condition de jointure du prédicat en utilisant le mot clef join)
cela donne :
SELECT
name,
wp_terms.term_id,
term_taxonomy_id
FROM wp_term_taxonomy
JOIN wp_terms USING (.term_id)
WHERE wp_term_taxonomy.taxonomy = 'product_cat';
SELECT
post_title,
ID
FROM wp_term_relationships
JOIN wp_posts ON wp_posts.ID = wp_term_relationships.object_id
WHERE wp_term_relationships.term_taxonomy_id = $ID
ORDER BY wp_posts.post_date DESC
J'ai supprimer le count de la première requête vu qu'il sert pas à grand chose.
pour le reste je suis parti du modèle de base de données suivant
https://codex.wordpress.org/images/2/25/WP4.4.2-ERD.png
De manière générale on commence par écrire la requête à partir des données qui nous intéresse (ici ce qu'il à dans wp_post)
donc
select post_title, wp_posts.ID from wp_posts
ensuite on fait les jointures avec les tables adjacentes.
la première c'est wp_term_relationships
SELECT
post_title,
wp_posts.ID
FROM wp_posts
JOIN wp_term_relationships wptr ON wp_posts.ID = wptr.object_id
et ainsi de suite en utilisant les clefs étrangères.
ainsi tu auras les données que tu souhaites complété avec les données des autres tables. Dans l'autres sens tu risques d'avoir des produits cartésien entres les tables et un jeux de données conséquent et inutile.
La requête finale.
SELECT
post_title,
wp_posts.ID
# ajoute les autres colonnes utile
FROM wp_posts
JOIN wp_term_relationships wptr ON wp_posts.ID = wptr.object_id
JOIN wp_term_taxonomy wptt ON wptt.term_taxonomy_id = wptr.term_id
JOIN wp_terms USING (term_id)
WHERE wptt.taxonomy = 'product_cat'
AND wptr.term_taxonomy_id = $ID
la dernière jointure utilise le mot clef using, qui est un raccourci pour le on lorsque les colonnes sont identique dans les deux tables. Par contre cela impose de ne pas préfixer le nom de la colonne, du coup il y a surement un problème avec la ligne précédente . dans ce cas la dernière ligne doit être JOIN wp_terms on wptt.term_id = wp_terms.term_id
pour le count, généralement c'est utiliser avec un group by.
si tu veux le nombre total de résultat peux être que ton driver te permet d'avoir l'info.
sinon tu peux un simple
SELECT count(1) as nb
FROM wp_posts
JOIN wp_term_relationships wptr ON wp_posts.ID = wptr.object_id
JOIN wp_term_taxonomy wptt ON wptt.term_taxonomy_id = wptr.term_id
JOIN wp_terms on wptt.term_id = wp_terms.term_id
WHERE wptt.taxonomy = 'product_cat'
AND wptr.term_taxonomy_id = $ID
pour avoir l'info.
@+
Il en faut peu pour être heureux ......