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
相关产品推荐
相关产品推荐

