We can pass arguments in get_posts function and WP_Query Object and query custom field values.
Here’s a basic example of how to use get_posts function and pass the arguments to find all posts where a custom field called “blog” has a value of “yogeshchauhan”.
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'posts',
'meta_key' => 'blog',
'meta_value' => 'yogeshchauhan'
));
Here’s another basic example of how to use get_posts function and pass the arguments to find all posts from custom post type “guest_posts” where a custom field called “blog” has a value of “yogeshchauhan”.
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'guest_posts',
'meta_key' => 'blog',
'meta_value' => 'yogeshchauhan'
));
Custom Fields Query like SQL: AND Operator
In the following example, I am passing multiple arguments in get_posts function to find all posts where a custom field called “blog” has a value of “yogeshchauhan” or “w3org”.
Also, there is another custom field called “featured” which is a checkbox that indicates if the blog post if featured or not and it takes boolean parameter. We are passing 1 as a parameter to see whether that checkbox is checked.
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'blog',
'value' => array('yogeshchauhan', 'w3org'),
'compare' => 'IN',
),
array(
'key' => 'featured',
'value' => '1',
'compare' => '=',
),
),
));
Custom Fields Query like SQL: OR Operator
We can convert the same example from above AND operator and just change it to OR operator example.
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'blog',
'value' => array('yogeshchauhan', 'w3org'),
'compare' => 'IN',
),
array(
'key' => 'featured',
'value' => '1',
'compare' => '=',
),
),
));
Credit: ACF Docs
ACF custom get_posts meta values WP_Query