2010-05-04 4 views
2

Je modifie légèrement un plugin pour répondre à mes besoins, et j'ai besoin de changer cette requête pour retourner les ID de poste d'une seule catégorie. Je sais que cela a quelque chose à voir avec INNER JOIN, mais je ne peux pas obtenir la bonne réponse.WordPress requête SQL sur la catégorie/termes

Voici la requête originale

$query = "SELECT ID as PID FROM $wpdb->posts"; 
$results = $wpdb->get_results($querydetails,ARRAY_A); 

EDIT: ok, je l'ai trouvé le moyen de rendre la requête

$query = " 
SELECT ID as PID FROM $wpdb->posts 
LEFT JOIN $wpdb->term_relationships ON 
($wpdb->posts.ID = $wpdb->term_relationships.object_id) 
LEFT JOIN $wpdb->term_taxonomy ON 
($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) 
WHERE $wpdb->posts.post_status = 'publish' 
AND $wpdb->term_taxonomy.taxonomy = 'category' 
AND $wpdb->term_taxonomy.term_id = 3 
"; 

Répondre

1

WordPress vous recommande d'utiliser query_posts() autant que possible lors de la récupération des postes de la base de données. Vous pouvez essayer à la place:

// $cat contains the category ID 
$posts = query_posts('cat=' . $cat); 
+0

merci, ce n'est pas au niveau du thème cependant. C'est dans un plugin et je ne veux pas trop modifier les choses du tout. – mroggle

+0

hmm, cela devrait être disponible à tout "niveau" que vous écrivez du code à ... niveau de plugin = niveau de thème – cwd

+0

@BoltClock - pourquoi ne pas passer aussi à Wordpress Stack Exchange? – cwd