Get all products from Woocommerce using REST API

后端 未结 7 1893
鱼传尺愫
鱼传尺愫 2020-12-18 16:12

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         


        
相关标签:
7条回答
  • 2020-12-18 16:34

    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)
    
    0 讨论(0)
  • 2020-12-18 16:35
    /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

    0 讨论(0)
  • 2020-12-18 16:39

    I was able to find the data using the following solution,

    https://squatwolf.com/wc-api/v3/products?filter[limit] =-1
    
    0 讨论(0)
  • 2020-12-18 16:41

    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);
    
    0 讨论(0)
  • 2020-12-18 16:45

    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

    0 讨论(0)
  • 2020-12-18 16:49

    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 );
    
    0 讨论(0)
提交回复
热议问题