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

调用WooCommerce REST API时GET参数被忽略,无法获取全部分类

解决WooCommerce API忽略per_page参数的问题

看起来你遇到了WooCommerce API分页参数被忽略的问题,结合你的环境(同服务器NGINX+跨子域名部署),我整理了几个最容易踩的坑和对应的解决方向:

1. 检查NGINX配置是否漏传查询参数

这是跨子域名调用API时最常见的问题——如果你的CRM是通过NGINX转发请求到WooCommerce站点,很可能没把URL里的查询参数完整传递过去。

  • 打开crm.example.com的NGINX配置文件,找到反向代理的location块,确保proxy_pass后面加上$request_uri,这样会完整传递URL和所有查询参数:
server {
    server_name crm.example.com;

    location / {
        # 替换成你WooCommerce站点的实际本地地址(比如端口或unix socket)
        proxy_pass http://localhost:8080$request_uri;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • 同时检查example.com的NGINX配置,处理WP REST API的location块要保留查询参数:
location /wp-json/ {
    try_files $uri $uri/ /index.php?$args;
}

这里的?$args会把所有GET参数传递给WordPress,确保WooCommerce能接收到per_page。

2. 确认API请求真的带上了per_page参数

有时候代码看起来加了参数,但实际请求URL里并没有。你可以在发送请求前打印完整的请求URL来验证:

$request = $client->get('products/categories', ['per_page' => 100]);
// 打印出来看看参数是否存在
var_dump($request->getUrl());

正常应该输出类似https://example.com/wp-json/wc/v3/products/categories?per_page=100。如果看不到per_page,说明你用HttpClient的方式不对,再核对一下WooCommerce PHP客户端的文档,确认查询参数是通过第二个数组参数传递的。

3. 检查WooCommerce的API分页限制

WooCommerce REST API默认允许的最大per_page是100,你的43个分类完全在范围内,但也有可能被自定义代码修改了限制:

  • 去主题的functions.php或者自定义插件里搜搜有没有woocommerce_rest_collection_params这个钩子,如果有代码修改了per_page的上限,确保数值大于等于43。
  • 要是找不到修改的地方,直接恢复默认设置就行。

4. 排查NGINX缓存的影响

如果你的NGINX开启了缓存,有可能缓存了不带per_page参数的请求结果,导致新请求一直返回旧的10条数据:

  • 可以先临时关掉缓存测试一下,如果恢复正常,那就是缓存的问题。
  • 或者修改缓存键,把查询字符串包含进去,这样不同参数的请求会生成不同的缓存:
proxy_cache_key "$scheme$request_method$host$request_uri";

5. 直接请求API做排除测试

绕过CRM,直接用浏览器或者Postman请求https://example.com/wp-json/wc/v3/products/categories?per_page=100:

  • 如果能返回全部43个分类,说明问题出在CRM的请求构造或者NGINX的转发配置上;
  • 如果还是只返回10个,那问题就出在WooCommerce本身的配置或者自定义代码上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:25:29