Opens in a new tab
17th Nov '25
/
5 comments

Latest Featured Posts First in Bricks Query Loop (No Duplicates)

In the Bricks Facebook group a user asks:

Brain has frozen – need some help please. [ query help… not grid display help ]

I would like to display Bricks builder query results from 5 CPTs (resources). I want the first 2 results of the query to be the newest 2 posts marked as ‘Featured’ (based on a yes/no ACF field) from the different CPTs.

I would like the rest of the results to continue in date order and not repeat the 2 featured posts.

There will always be at least 2 featured posts, but only the two latest should be featured first. The 3rd, 4th, 5th etc featured post should just appear in the normal query loop output.

And the results use a Bricks filter… so having 2 query loops is not an option.

We can use AI to help unfreeze our brains sometimes or at least have it write the code with us after giving directions on the logic 😅.

Here’s the PHP query for this:

// Define your post types - adjust these to match your actual CPT slugs
$post_types = ['resource']; // or ['type1', 'type2', 'type3', 'type4', 'type5']

// Step 1: Get the 2 latest featured posts
$featured_args = [
	'post_type' => $post_types,
	'posts_per_page' => 2,
	'orderby' => 'date',
	'order' => 'DESC',
	'meta_query' => [
		[
			'key' => 'featured', // Replace with your ACF field name
			'value' => '1',
			'compare' => '='
		]
	],
	'fields' => 'ids',
	'no_found_rows' => true,
];

$featured_post_ids = get_posts( $featured_args );

// Step 2: Get all other posts (excluding the 2 featured posts)
$other_args = [
	'post_type' => $post_types,
	'posts_per_page' => 100, // Adjust based on total posts expected
	'orderby' => 'date',
	'order' => 'DESC',
	'fields' => 'ids',
	'no_found_rows' => true,
];

// Exclude the 2 featured posts if found
if ( ! empty( $featured_post_ids ) ) {
	$other_args['post__not_in'] = $featured_post_ids;
}

$other_post_ids = get_posts( $other_args );

// Step 3: Merge arrays - featured posts first, then the rest
$final_post_ids = array_merge( $featured_post_ids, $other_post_ids );

// Return empty result if no posts found
if ( empty( $final_post_ids ) ) {
	return ['post__in' => [0]];
}

// Step 4: Return query args maintaining the order
return [
	'post_type' => $post_types,
	'posts_per_page' => -1, // Show all, or set a number for pagination
	'post__in' => $final_post_ids,
	'orderby' => 'post__in', // Maintains the order we set
	'no_found_rows' => true,
];
Get access to all 633 Bricks code tutorials with BricksLabs Pro

5 comments

  • Thanks for sharing Sridhar.

  • Thanks for sharing, but this doesn' t work for me. The featured posts are not the first, it just simply put everything in date order. I have almost the same task, with a slight difference. I need 4 featured post from the same acf post type, but with random order on the first 4, and in random order the rest afterwards and it needs to be filterable. I just tried this too, because it's almost the same, but I don't think it works as it should. The AI ​​told me, if I use a meta query, I can't specify an order. I don't kno about that...

Leave your comment

 

Related Tutorials..

Pro
Displaying Gallery of SureCart Product Images with Bricks’ Query Loop

Displaying Gallery of SureCart Product Images with Bricks’ Query Loop

Custom query loop for looping through SureCart product images.
Categories:
Tags:
Pro
Hierarchical Posts with Nested Query Loops in Bricks

Hierarchical Posts with Nested Query Loops in Bricks

Learn how to set up nested query loops in Bricks to show hierarchical posts with child posts grouped under their corresponding parent posts
Categories:
Pro
CMB2 Repeatable Group Bricks Query Loop

CMB2 Repeatable Group Bricks Query Loop

This Pro tutorial provides the steps to create a custom query loop type for outputting the subfield values of a Group field (repeatable) when using…
Pro
Post Views Counter Query Loop in Bricks

Post Views Counter Query Loop in Bricks

How we can output the most viewed posts in your Bricks site in a query loop.
Categories:
Pro
Nested Meta Box Query Loop Inside a CPT Query Loop in Bricks

Nested Meta Box Query Loop Inside a CPT Query Loop in Bricks

This Pro tutorial provides the steps for setting up a cloneable Meta Box group query inside a CPT query in Bricks. Scenario: CPT: course Meta…
Categories:
Pro
Dynamic Horizontal Posts Accordion in Bricks

Dynamic Horizontal Posts Accordion in Bricks

Update on 8 Sep 2024: You may want to follow the newer version that considers accessibility. Looking to make a Horizontal Image Accordion dynamic? This…
How to Show Future Events in Bricks

How to Show Future Events in Bricks

One of the common requirements in WordPress is being able to filter the events (or could be posts of any post type) to only those…
Categories: