A user asks:
I have a list of posts (IDs) in a custom field of a CPT. On a Bricks template, I need to run a query for the IDs in the custom field only. How can I tell the query loop builder to use the IDs from the custom field only?
In PHP, I’d add this (custom field is an array):post__in => $custom_field
But How can I add this to Bricks? Do I have to create a custom Query in PHP and hook that into the builder, or is there an easier way?
Recently Bricks introduced the PHP query editor that lets us modify the query parameters right within the query dialog of the builder rather than having to do it outside using a code snippets plugin or child theme’s functions.php
.
Generally speaking, a “Post” type of Meta Box field or a Relationship is better suited when the requirement is to select one or more posts (of any post type) when editing a post (of any post type). But in this case, let’s go with a “Select advanced” field type per the user’s question.
The above field group’s location is set to Post type = Page (page).
Post IDs field being populated on a sample Page:
Set up a query loop in the Bricks template that applies to all single pages of the page
post type.
Click on the query icon and toggle “Query editor (PHP)” on.
Paste:
return [
'post__in' => rwmb_meta( 'post_ids' ),
'posts_per_page' => '-1',
];
where post_ids
is the ID of the field group.
That will tell Bricks (to tell WordPress) to fetch all the posts whose IDs are in the array of posts returned by the value of that custom field.