【wordpress】カスタム投稿と特定のタグを含む通常の投稿を抜き出すSQL文

Author:

WP_Queryに入れる条件がANDになっていてpost_typeとcategory両方設定させたらNOT FOUNDになるので、
SQLクエリ書いてみた。

select p.id
from
wp_posts p,
wp_term_relationships rel,
wp_terms t,
wp_term_taxonomy tax
where
post_type = ‘カスタムポストのslug’
or (
t.slug = ‘タグのslug’
and t.term_id = tax.term_id
and rel.term_taxonomy_id = tax.term_taxonomy_id
and p.id = rel.object_id
)
group by p.id

タグと投稿のつながりが遠いw
間に二つもテーブル挟むのね。。

まあともかく、これでIDが取得できるので、WP_Postのpost__inに入れればいい。

global $wpdb;
$post_ids = $wpdb->get_col( $wpdb->prepare( ”
select p.id
from
wp_posts p,
wp_term_relationships rel,
wp_terms t,
wp_term_taxonomy tax
where
post_type = ‘games’
or (
t.slug = ‘t_game’
and t.term_id = tax.term_id
and rel.term_taxonomy_id = tax.term_taxonomy_id
and p.id = rel.object_id
)
group by p.id
“));
$query_args = array( ‘post__in’ => $post_ids, ‘post_type’ => array(‘post’, ‘カスタム投稿のslug’) );
$my_query = new WP_Query( $query_args );
こんな感じかな。

Share on Facebook
Pocket