I have a custom post type named file. I also have a custom post type named ‘circle’. The file post type has a custom relationship field called circles which allows for one or more circles to be selected and attached to the file post type.
Now I would like to query for files based on circle ids if another field called file_type is set to circle.
If I hard code this query it works exactly as I would expect.
$fileArgs = array(
'posts_per_page' => -1,
'post_type' => 'file',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'file_type',
'value' => 'circle',
'compare' => '=',
),
array(
'relation' => 'OR',
array(
'key' => 'circles',
'value' => "67",
'compare' => 'LIKE'
),
array(
'key' => 'circles',
'value' => "62",
'compare' => 'LIKE'
)
)
),
);
return get_posts($fileArgs);
Now the problem I have is the ids of circles will need to be dynamic so my solution I thought should work looks something like this.
$ids = array(67, 62);
foreach ($ids as $id) {
$circleRelations[] = array(
'key' => 'circles',
'value' => "$id",
'compare' => 'LIKE'
);
}
$fileArgs = array(
'posts_per_page' => -1,
'post_type' => 'file',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'file_type',
'value' => 'circle',
'compare' => '=',
),
array(
'relation' => 'OR',
$circleRelations
)
),
);
return get_posts($fileArgs);
However this does not work and I am not really sure why.