2010-11-29 8 views
2

Je me demande comment je peux retravailler cette déclaration pour exclure une certaine catégorie, à savoir. category id = 14Wordpress instruction SQL pour exclure certaine catégorie

Veuillez noter que les catégories wordpress sont dans un tableau différent.

référencée term_relationships et la catégorie est term_taxonomy_id

<?php 
$now = gmdate("Y-m-d H:i:s", strtotime('0 days')); 

$request = $wpdb->prepare("SELECT ID, post_title, post_date, post_excerpt,LEFT(post_content,$sqllimit) AS short_post_content FROM $wpdb->posts WHERE post_status = 'publish' "); 
if($hide_pass_post) $request .= "AND post_password ='' "; 
if($include_pages) $request .= "AND (post_type='post' OR post_type=' 
else $request .= "AND post_type='post' "; 

$request .= "AND post_date_gmt > '$now' ORDER BY post_date ASC LIMIT $skip_posts, $returnnum"; 
$posts = $wpdb->get_results($request); ?> 
+0

Y at-il une raison que vous n'utilisez pas WP_Query() qui est la partie de l'API WordPress normalement utilisé pour l'interrogation d'une liste des postes? – MikeSchinkel

+0

c'est un plugin qui n'est pas vraiment construit au mieux. – ApPeL

Répondre

3
$request = $wpdb->prepare("SELECT * 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->term_taxonomy.term_id = 3 
    AND $wpdb->term_taxonomy.term_id <> 14 
    AND $wpdb->term_taxonomy.taxonomy = 'category' 
    AND $wpdb->posts.post_type = 'post' 
    AND $wpdb->posts.post_status = 'publish')"); 
Questions connexes