如何通过WooCommerce REST API按SKU列表获取全部商品
解决WooCommerce API获取多个SKU商品详情的问题
你的代码只返回最后一个SKU的商品,是因为当你直接传入SKU列表作为sku参数时,HTTP客户端会将其解析为重复的sku查询参数(比如sku=sku_1&sku=sku_2),而WooCommerce API仅会处理最后一个sku参数,因此只返回对应商品。
以下是两种可行的解决方法:
方法1:将SKU列表转为逗号分隔的字符串传递
WooCommerce API支持通过逗号分隔的字符串来指定多个SKU,直接将列表拼接后传入即可:
lst_of_skus = ['sku_1','sku_2'] # 把SKU列表转为逗号分隔的字符串 sku_filter = ','.join(lst_of_skus) # 发起请求 response = wcapi.get("products", params={'sku': sku_filter}).json()
方法2:处理分页(避免遗漏商品)
如果匹配的商品数量超过API默认的每页返回数(默认是10条),需要循环获取所有分页的结果:
lst_of_skus = ['sku_1','sku_2'] sku_filter = ','.join(lst_of_skus) all_products = [] current_page = 1 while True: # 每页最多请求100条(API允许的最大值) page_response = wcapi.get( "products", params={'sku': sku_filter, 'page': current_page, 'per_page': 100} ).json() if not page_response: break all_products.extend(page_response) current_page += 1 # all_products 就是所有匹配SKU的商品列表
注意:确保你的WooCommerce API版本为v3及以上,该版本开始支持逗号分隔的SKU过滤方式。
内容的提问来源于stack exchange,提问作者Ron Kieftenbeld
相关产品推荐
相关产品推荐

