I am trying to retrieve all products using rest api. I have read this question. I am using postman to make calls. Here is my query
https://squatwolf.com/wp-j
The filter
parameter is no longer supported, see the Docs. So you really need to loop the pages.
Here is how to get all products in JavaScript (for a Gutenberg Block store):
let allProducts = [],
page = 1
while (page !== false) {
const products = yield actions.receiveProducts(`/wc-pb/v3/products?per_page=100&page=${page}`)
if (products.length) {
allProducts = allProducts.concat(products)
page++
} else {
page = false // last page
}
}
return actions.setProducts(allProducts)
/wp-json/wc/v2/products
and
/wc-api/v3/products
both seems to work, but to get certain number of products I'm using
/wc-api/v3/products?filter[limit]=
put the number of products there. -1 for all products
I was able to find the data using the following solution,
https://squatwolf.com/wc-api/v3/products?filter[limit] =-1
This isn't the latest API endpoint:
/wc-api/v3/products?filter[limit]=
You have to fetch page per page to get all the products:
$page = 1;
$products = [];
$all_products = [];
do{
try {
$products = $wc->get('products',array('per_page' => 100, 'page' => $page));
}catch(HttpClientException $e){
die("Can't get products: $e");
}
$all_products = array_merge($all_products,$products);
$page++;
} while (count($products) > 0);
simple!!! you can use any number in place of 100. Its just the parameter written in https://woocommerce.github.io/woocommerce-rest-api-docs/#list-all-products
https://squatwolf.com/wp-json/wc/v2/products?per_page=100
This worked for me. With API v3
/wc-api/v3/products?
Retrieve first 500 products by default or
/wc-api/v3/products?per_page=900
To get 900 products
function maximum_api_filter($query_params) {
$query_params['per_page']['maximum'] = 10000;
$query_params['per_page']['default'] = 500;
return $query_params;
}
add_filter('rest_product_collection_params', 'maximum_api_filter', 10, 1 );