You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WooCommerce REST API获取全部商品仅返回10条结果的问题

解决WooCommerce REST API v2仅返回10条商品的问题

这个问题我之前也碰到过,WooCommerce REST API v2默认每页只返回10条数据,而且你用的filter[posts_per_page]=-1参数其实在v2版本里并不受支持(或者说被API的默认限制给覆盖了),下面给你几个靠谱的解决办法:

1. 使用官方推荐的per_page参数调整单页返回数量

WooCommerce API有自己的分页参数per_page,默认最大可以设置到100(这是API的安全上限,避免一次性拉取过多数据拖垮服务器)。你可以把请求地址改成:

https://squatwolf.com/wp-json/wc/v2/products?per_page=100

这样单页就能返回最多100条商品了。

2. 分页遍历获取全部商品

如果你的商品总数超过100,那必须通过分页来逐步获取所有数据,步骤如下:

  • 先发起第一次请求,带上per_page=100,然后查看响应头里的两个关键字段:
    • X-WP-Total:返回你的店铺总商品数
    • X-WP-TotalPages:返回总共有多少页数据
  • 接着循环请求每一页,比如第二页的地址是:
    https://squatwolf.com/wp-json/wc/v2/products?per_page=100&page=2
    
    直到请求的page数值等于X-WP-TotalPages的数值,这样就能把所有商品都拉取下来了。

为什么filter[posts_per_page]=-1不生效?

WooCommerce REST API v2并没有兼容WordPress原生的filter[posts_per_page]参数的-1取值,一方面是API本身做了限制,另一方面是为了性能考虑——一次性拉取全部商品可能会导致服务器超时或者响应过慢,官方更推荐用分页的方式来获取大量数据。

如果你的商品数量不多,且一定要尝试修改单页最大返回数,也可以通过WordPress代码添加过滤器调整上限,但不建议这么做:

add_filter( 'woocommerce_rest_per_page', 'custom_wc_rest_per_page', 10, 2 );
function custom_wc_rest_per_page( $per_page, $request ) {
    // 设置你想要的最大数量,比如200
    return 200;
}

不过还是优先用分页方案更稳妥。

内容的提问来源于stack exchange,提问作者user379888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:32:59