If I understand your question fully, I believe this is what you’re after.
As far as I know… There is no WP_Query that you can use to accomplish this. However, you can use the $wpdb and make a custom query.
global $wpdb;
$q = " SELECT * from {$wpdb->posts} p
RIGHT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key = 'your_meta_key'
WHERE p.post_type="your_post_type" AND p.post_status="publish" and p.post_content <> ' '
LIMIT 3";
$results = $wpdb->get_results($q);
foreach ($results as $post){
// Your Loop goes here
echo $post->post_content;
}
Just replace the ‘your_post_type’ etc with your custom fields.
Instead of p.post_content, you could also use pm.meta_value <> ‘ ‘ – this will retrieve only posts where the value of the meta field you’ve chosen is not empty.
in which case, the Query would be:
$q = " SELECT * from {$wpdb->posts } p
RIGHT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key = 'your_meta_key'
WHERE p.post_type="your_post_type" AND p.post_status="publish" and pm.meta_value <> ' '
LIMIT 3";