私がやろうとしていること(例えば): "ポップ"ジャンルのアーティストに属するすべてのコンサートをリストアップする。
これが私の夢の質問です。
SELECT * FROM posts WHERE post_type = "concert" AND post_parent_term = "pop"
私は現在、post_parent_termのようなことはないと思います、私が間違っていることを願っています... "コンサート"カスタム投稿タイプと出来上がり!しかし、それを達成するための別の方法があるかどうかを知りたいのは私は本当に興味があります。
事前に感謝します。
私がやろうとしていること(例えば): "ポップ"ジャンルのアーティストに属するすべてのコンサートをリストアップする。
あなたは2つのステップでそれをすることができます:
// 1. Get all the pop artist IDs
$artist_ids = get_posts( array(
'fields' => 'ids',
'post_type' => 'artist',
'genre' => 'pop'
) );
// 2. Get all the concerts associated to those artists
$artist_ids = implode( ',', array_map( 'absint', $artist_ids ) );
$concerts = $wpdb->get_results( "
SELECT * FROM $wpdb->posts
WHERE post_type = 'concert'
AND post_status = 'publish'
AND post_parent IN ({$artist_ids})
ORDER BY post_date DESC
" );
WP_Queryにはpost_parent引数がありますが、それ は配列 を受け入れないため、直接問い合わせになります。
親ページは$ post-> post_parentに保存されます。
そのため、親の投稿をそのようにして取得してから、分類/カテゴリ/タグ情報を要求できます。
それが正しい方法であるかどうかはわかりませんが、ネストしたループを作成できます。
//まずポップという用語ですべてのアーティストを取得する
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => 'pop'
))
'post_type' => 'Artist',
'posts_per_page' => -1
);
$Artists = new WP_Query( $args );
//loop through them and get there child posts of concerts
if ( $Artists->have_posts() ) {
while ( $Artists->have_posts() ) {
$Artists->the_post();
$last_artist = $post;
$Concerts = new WP_Query();
$Concerts->query(array(
'post_type' => 'concert',
'posts_per_page' => -1,
'post_parent' => $post->ID
));
while ( $Concerts->have_posts() ) {
$Concerts->the_post();
//do concert stuff here
//the_title();
//the_content();
}
wp_reset_postdata();
$post = $last_artist;
}
}