- I have 2 customs post type : “Artist” and “Concert”,
- the “Concert” custom post type is the child of the “Artist” custom post type,
- the “Artist” custom post type has a “genre” taxonomy.
What I’m trying to do (for instance): list all the concerts which belong to artists of the “pop” genre.
Here is the query of my dream:
SELECT * FROM posts WHERE post_type = "concert" AND post_parent_term = "pop"
I think currently there is no such thing as post_parent_term, hope I’m wrong …
(I know i can add the “genre” taxonomy to the “Concert” custom post type and voilà! But I’m really curious to know if there is another way to achieve that).
Thanks by advance.
What I’m trying to do (for instance):
list all the concerts which belong to
artists of the “pop” genre.
You can do it in two steps:
// 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
" );
There’s a post_parent argument in WP_Query, but it doesn’t accept an array, hence the direct query.