wordpress 如何从woo-commerce获得所有产品?

jhkqcmku  于 2022-11-02  发布在  WordPress
关注(0)|答案(5)|浏览(276)

我已经安装了Woo-Commerce,其中有超过1000个产品。使用Woocommerce的休息API PHP库,我试图得到所有的产品。
但它给我10个产品。如果我使用过滤器[限制],它给我大约400个产品,不超过这个。

$res = $wc_api->get_products(array( 'filter[limit]' => 400 ) );

有没有人能说我怎么才能从woocommerce得到所有的产品?

unguejic

unguejic1#

有关WC API的最新版本,请使用

$products = $client->products->get( '', ['filter[limit]' => -1] );

如果它不起作用,请尝试将限制替换为posts_per_page,如下所示:

'filter[posts_per_page]'=>-1

根据您的服务器规格和产品的总数,这种类型的查询可能需要大量的内存,所以如果您遇到任何错误或查询没有完成,请确保php.ini中的内存限制足够高。

xoshrz7s

xoshrz7s2#

这不是最新的API端点:

/wc-api/v3/products?filter[limit]=

你必须获取每页的页面,以获得所有的产品:

$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);

Source

yx2lnoni

yx2lnoni3#

网站地址:
请尝试使用此终结点列出产品。您还可以获取类别和价格。

7d7tgy0s

7d7tgy0s4#

如果您使用的是Laravel软件包,如codexshaper/laravel-woocommercecorcel/woocommerce或其他软件包,请注意您的WooCommerce网站中的产品类型。默认情况下,当您调用$products = Product::all();时,它只会给您simple产品类型的产品。
以下是woocommece中默认产品类型的列表:

'simple', 'grouped', 'external', 'variable', 'external', 'subscription', 'variable-subscription'

所以你必须指定你想要得到其他产品的产品类型。

$product = WooProduct::all(['per_page'=> '100','type'=>'simple']);
roejwanj

roejwanj5#

我发现的唯一方法是使用下面的wp-cli命令迭代产品的所有页面(第1页、第2页等),直到返回的列表为空。
wp wc product list --page={page} --format=json --fields=id,description
它模仿了我们在wp admin中的工作方式。

相关问题