The trouble is you’re filtering at the loop stage, not the query. Here’s what’s happening:
WP_Query
, give me the latest 2 books- Loop over them
- Only one has
book_featured
, so only that shows
Instead, remove the if ( book_featured )
condition from your loop & add it to your query:
$args = array(
'post_type' => 'book',
'posts_per_page' => '2',
'meta_key' => 'book_featured',
'meta_value' => '1', // I'm not 100% sure this is how ACF stores checkbox data, you'll need to check the `wp_postmeta` table
);