複数のカテゴリから投稿を選択するためのSQLクエリ
質問
カテゴリ内の投稿を選択するためのクエリを作成しました。正常に動作します。ただし、カテゴリを除外してセカンダリフィルターを追加することを選択すると、クエリは同じ結果セットを返します。
以下のクエリでは、カテゴリ7のすべての投稿を選択し、カテゴリ10の投稿を除外する必要があります。
$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')";
誰かが助けることができますか?
解決
言及されたrarstのように、組み込みのAPIを使用します。あなたはこのようなことをすることができます:
$just_seven = new WP_Query(
array(
'category__in' => array( 7 ),
'category__not_in' => array( 10 )
)
);
その後、それらのアイテムがあります $just_seven->posts
.
ただし、直接SQLステートメントを使用する必要がある場合は、使用することをお勧めします INNER JOIN
それ以外の LEFT JOIN
.
所属していません wordpress.stackexchange