使用REST API从Woocommerce获取所有产品

fud*_*din 0 php rest wordpress woocommerce-rest-api

我正在尝试使用rest api检索所有产品。我已经读过这个问题。我正在用邮递员打电话。这是我的查询

https://squatwolf.com/wp-json/wc/v2/products?filter[posts_per_page] =-1
Run Code Online (Sandbox Code Playgroud)

该查询仅显示10个结果。

小智 6

我能够使用以下解决方案找到数据,

https://squatwolf.com/wc-api/v3/products?filter[limit] =-1
Run Code Online (Sandbox Code Playgroud)


spa*_*z51 6

这不是最新的API端点:

/wc-api/v3/products?filter[limit]=
Run Code Online (Sandbox Code Playgroud)

您必须每页获取页面才能获得所有产品:

$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);
Run Code Online (Sandbox Code Playgroud)

  • 由于默认的 orderby 是“日期”,因此当您分页时,记录可能会无序返回,从而导致记录重复和丢失。确保按 id 排序以获取所有记录: $products = $wc->get('products',array('ordery' => 'id', 'per_page' => 100, 'page' => $page) ); (3认同)

小智 5

这对我有用。使用 API v3

/wc-api/v3/products?
Run Code Online (Sandbox Code Playgroud)

默认检索前 500 个产品或

/wc-api/v3/products?per_page=900
Run Code Online (Sandbox Code Playgroud)

获得 900 个产品

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 );
Run Code Online (Sandbox Code Playgroud)