Frage

Ich habe eine Abfrage erstellt, um Beiträge in einer Kategorie auszuwählen. Funktioniert gut. Wenn ich jedoch einen Sekundärfilter hinzufügen möchte, um eine Kategorie auszuschließen, gibt die Abfrage die gleiche Ergebnismenge zurück, als ob der Sekundärkategoriefilter ignoriert wird.

Im Folgenden sollte die Abfrage alle Beiträge in Kategorie 7 auswählen und diese in Kategorie 10 ausschließen:

$querystr = "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 = 7
   AND $wpdb->term_taxonomy.term_id <> 10  
   AND $wpdb->term_taxonomy.taxonomy = 'category'   
   AND $wpdb->posts.post_type = 'post'  
   AND $wpdb->posts.post_status = 'publish')";

Kann jemand helfen?

War es hilfreich?

Lösung

Ich würde die eingebaute API verwenden, wie Rarst erwähnt. Sie könnten so etwas tun:

$just_seven = new WP_Query(
  array(
    'category__in' => array( 7 ),
    'category__not_in' => array( 10 )
  )
);

Sie würden dann diese Artikel in haben $just_seven->posts.

Wenn Sie jedoch eine direkte SQL -Anweisung verwenden müssen, würde ich vorschlagen INNER JOIN Anstatt von LEFT JOIN.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top