Home › Forums › General Issues › How to filter products with ACF in rest API
Hello,
I can use the rest api to receive all my product with this link : https://mysite.com/wp-json/wc/v3/products
I created custom fields the the ACF plugin.
I can see the fields in the result
Now I want to be able to filter the results with a link like this
https://mysite.com/wp-json/wc/v3/products?mycustomfieldname=mycustomfieldvalue
I have to add some code in my Functions.php file but I’m doing something wrong or with the bad hook.
Could you please help me with a sample ?
Thanks in advance,
Previously, I’ve added some code to my functions file:
// Create custom query for API
if( ! function_exists( 'product_meta_request_params' ) ) :
function product_meta_request_params( $args, $request ){
$args += array(
'meta_key' => $request['meta_key'],
'meta_value' => $request['meta_value'],
'meta_query' => $request['meta_query'] == 1 ? array(
array(
"key" => "model",
"value" => array(''),
"compare" => 'NOT IN',
)
) : $request['meta_query']
);
return $args;
}
add_filter( 'rest_product_query', 'product_meta_request_params', 99, 2 );
endif;
My API URL then looked like:
https://www.domain.com/wp-json/wp/v2/product/?page=' . $current_page . '&per_page=10&meta_query=1
Hello @jarvis,
Thanks for your help.
I use this code :
function my_pre_get_products( $query ) {
// do not modify queries in the admin
if( is_admin() ) {
return $query;
}
// only modify queries for 'product' post type
if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'product' ) {
// allow the url to alter the query
if( isset($_GET['id_article_mercator']) ) {
$query->set('meta_key', 'id_article_mercator');
$query->set('meta_value', $_GET['id_article_mercator']);
}
}
return $query;
}
add_action('pre_get_posts', 'my_pre_get_products');
Now I have a response on this url : https://mywebsite/wp-json/wc/v3/products?id_article_mercator=42771
Now I want to have the same result for a category of the products.
This url returns all the categories.
https://mywebsite/wp-json/wc/v3/products/categories/
I want to be able to filter a custom field added by ACF
https://mywebsite/wp-json/wc/v3/products/categories/?myfield=testvalue
Do you have an idea what to add as function for this ?
What’s strange also, for the products, I can see in the rest api result the metadata with the values added by ACF
For the category, the metadata aren’t visible.
In the database the values are stored in termmeta for the categories and in postmeta for the products.
If I’m right, the product is a post and the category is a taxonomy.
Thanks in advance,
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.