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

WooCommerce API通过axios获取产品全量变体仅返回10条如何解决

WooCommerce API获取产品变体仅返回10条的修复方案

两个核心问题导致你拿不到全量50条变体数据:

  • 代码里的请求URL拼接错误:你在per_page=50&后直接换行了,JS里双引号包裹的普通字符串不支持无转义跨行,实际发请求时per_page之后的参数被截断,API根本没收到你设置的per_page=50参数,自动按默认值10条/页返回数据。
  • 缺少分页逻辑:WooCommerce REST API默认单页最多返回100条数据,如果后续产品变体数超过单页上限,没有分页逻辑的话永远拿不全数据。

修复后的完整代码如下,已经处理了参数拼接和全量分页拉取:

getVariationPrice: async function () {
  // 正确拼接基础请求路径,不要随意断行
  const requestBase = `products/4227/variations?per_page=100&consumer_key=${this.ck}&consumer_secret=${this.cs}`
  let allVariations = []

  // 拉取第一页数据,同时从响应头获取总页数
  const firstPageRes = await axios.get(`${this.BaseUrl}${requestBase}&page=1`)
  const totalPages = Number(firstPageRes.headers['x-wp-totalpages']) || 1
  allVariations.push(...firstPageRes.data)

  // 剩余页数并行拉取,提升请求速度
  if (totalPages > 1) {
    const restPageTasks = []
    for (let pageNum = 2; pageNum <= totalPages; pageNum++) {
      restPageTasks.push(axios.get(`${this.BaseUrl}${requestBase}&page=${pageNum}`))
    }
    const restPageResults = await Promise.all(restPageTasks)
    restPageResults.forEach(res => {
      allVariations.push(...res.data)
    })
  }

  this.variations = allVariations
  console.log('全量变体数据:', this.variations)
}

注意:如果你自己在站点后台修改过WooCommerce API的单页最大返回条数限制,把代码里per_page的值改成你配置的数值即可,不要超过站点允许的上限,否则参数会被API自动忽略,回退到默认的10条/页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 15:51:38