我已经安装了Woo-Commerce,其中有超过1000个产品。使用Woocommerce的休息API PHP库,我试图得到所有的产品。但它给我10个产品。如果我使用过滤器[限制],它给我大约400个产品,不超过这个。
$res = $wc_api->get_products(array( 'filter[limit]' => 400 ) );
有没有人能说我怎么才能从woocommerce得到所有的产品?
unguejic1#
有关WC API的最新版本,请使用
$products = $client->products->get( '', ['filter[limit]' => -1] );
如果它不起作用,请尝试将限制替换为posts_per_page,如下所示:
'filter[posts_per_page]'=>-1
根据您的服务器规格和产品的总数,这种类型的查询可能需要大量的内存,所以如果您遇到任何错误或查询没有完成,请确保php.ini中的内存限制足够高。
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
yx2lnoni3#
网站地址:请尝试使用此终结点列出产品。您还可以获取类别和价格。
7d7tgy0s4#
如果您使用的是Laravel软件包,如codexshaper/laravel-woocommerce或corcel/woocommerce或其他软件包,请注意您的WooCommerce网站中的产品类型。默认情况下,当您调用$products = Product::all();时,它只会给您simple产品类型的产品。以下是woocommece中默认产品类型的列表:
codexshaper/laravel-woocommerce
corcel/woocommerce
$products = Product::all();
simple
'simple', 'grouped', 'external', 'variable', 'external', 'subscription', 'variable-subscription'
所以你必须指定你想要得到其他产品的产品类型。
$product = WooProduct::all(['per_page'=> '100','type'=>'simple']);
roejwanj5#
我发现的唯一方法是使用下面的wp-cli命令迭代产品的所有页面(第1页、第2页等),直到返回的列表为空。wp wc product list --page={page} --format=json --fields=id,description个它模仿了我们在wp admin中的工作方式。
wp-cli
wp wc product list --page={page} --format=json --fields=id,description
5条答案
按热度按时间unguejic1#
有关WC API的最新版本,请使用
如果它不起作用,请尝试将限制替换为posts_per_page,如下所示:
根据您的服务器规格和产品的总数,这种类型的查询可能需要大量的内存,所以如果您遇到任何错误或查询没有完成,请确保php.ini中的内存限制足够高。
xoshrz7s2#
这不是最新的API端点:
你必须获取每页的页面,以获得所有的产品:
Source
yx2lnoni3#
网站地址:
请尝试使用此终结点列出产品。您还可以获取类别和价格。
7d7tgy0s4#
如果您使用的是Laravel软件包,如
codexshaper/laravel-woocommerce
或corcel/woocommerce
或其他软件包,请注意您的WooCommerce网站中的产品类型。默认情况下,当您调用$products = Product::all();
时,它只会给您simple
产品类型的产品。以下是woocommece中默认产品类型的列表:
所以你必须指定你想要得到其他产品的产品类型。
roejwanj5#
我发现的唯一方法是使用下面的
wp-cli
命令迭代产品的所有页面(第1页、第2页等),直到返回的列表为空。wp wc product list --page={page} --format=json --fields=id,description
个它模仿了我们在wp admin中的工作方式。