カスタム投稿タイプ 'post-type-x'と、それに関連付けられた3つのカスタム分類法 'taxonomy-1'、 'taxonomy-2'、 'taxonomy-3'があります。
カスタム分類法 'taxonomy-1'と 'taxonomy-2'を持つすべての投稿を取得したいです。
Query_posts関数に渡す引数配列は何になりますか?
$args = array ( ..?.. )
この質問は誤解を招く可能性があると思います。あなたは言う:
カスタム分類法 'taxonomy-1'と 'taxonomy-2'を持つすべての投稿を検索したい
しかし
bothtaxonomy-1、taxonomy-2、およびtaxonomy-3の関連性のない投稿が必要ですか。
$args = array(
'post_type' => 'post-type-x',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'taxonomy-1',
'field' => 'id',
'terms' => get_terms( 'taxonomy-1', array('fields' => 'ids', 'hide_empty' => false) )
),
array(
'taxonomy' => 'taxonomy-2',
'field' => 'id',
'terms' => get_terms( 'taxonomy-2', array('fields' => 'ids', 'hide_empty' => false) )
)
)
);
または
bothtaxonomy-1とtaxonomy-2を持つがnottaxonomy-3の投稿はありますか。
$args = array(
'post_type' => 'post-type-x',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'taxonomy-1',
'field' => 'id',
'terms' => get_terms( 'taxonomy-1', array('fields' => 'ids', 'hide_empty' => false) )
),
array(
'taxonomy' => 'taxonomy-2',
'field' => 'id',
'terms' => get_terms( 'taxonomy-2', array('fields' => 'ids', 'hide_empty' => false) )
),
array(
'taxonomy' => 'taxonomy-3',
'field' => 'id',
'terms' => get_terms( 'taxonomy-3', array('fields' => 'ids', 'hide_empty' => false) ),
'operator' => 'NOT IN'
)
)
);
または
タクソノミー-1またはタクソノミー-2、タクソノミー3とは無関係の投稿が必要ですか。
$args = array(
'post_type' => 'post-type-x',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'taxonomy-1',
'field' => 'id',
'terms' => get_terms( 'taxonomy-1', array('fields' => 'ids', 'hide_empty' => false) )
),
array(
'taxonomy' => 'taxonomy-2',
'field' => 'id',
'terms' => get_terms( 'taxonomy-2', array('fields' => 'ids', 'hide_empty' => false) )
)
)
);
get_terms
はdbクエリを実行するため、これらの種類のクエリはパフォーマンスが良くないことに注意してください。したがって、上記のコードを使用すると、ページビューが遅くなるクエリがいくつかあることになります。
このコードを含むファイルで、分類用語のID(またはスラッグ)の配列を含むいくつかの変数にアクセスできる場合は、それらを使用してパフォーマンスを向上させることができます。
別の方法としては、適切なSQLクエリとともに$wpdb->get_results
を使用してカスタムdbクエリを作成することです。