Home › Forums › General Issues › Relationship Field query by array of IDS.
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.
When you append the query like that, it becomes another level deep, which is not what you want.
...
[relation] => OR
[0] => Array (
[0] => Array (
[key] => circles
[value] => 67
[compare] => LIKE
),
[1] => Array (
[key] => circles
[value] => 62
[compare] => LIKE
)
)
Try to use array merge to merge them, something like:
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'file_type',
'value' => 'circle',
'compare' => '=',
),
array_merge(array('relation' => 'OR'), $circleRelations)
),
Cheers.
@gummiforweb Thanks for the help. This worked perfectly.
The topic ‘Relationship Field query by array of IDS.’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.