【发布时间】:2021-08-06 22:45:49
【问题描述】:
技术栈
- PHP 7.4.2
- Laravel 7
背景
我正在尝试从我们的 WooCommerce 网站中提取有效产品,一次一页。然后将这些所需的数据提取出来并格式化为 JSON,然后返回给用户(在本例中是一个营销平台进行 API 调用)。
问题
无论哪个查询参数在我的列表中排在第一位,要么在它离开我的系统之前被删除,要么被 WC/WP REST API 忽略。
调用代码
function getProducts($page = 1, $per_page = 100, $status = 'publish') {
$query = array(
// 't' => 1, // For testing first parameter bug
'page' => $page,
'per_page' => $per_page,
'status' => $status,
);
$string = http_build_query($query, null, '&', PHP_QUERY_RFC3986);
$url = $this->finalUrl . '/wp-json/wc/v3/products?' . $string;
$json = file_get_contents($url);
return json_decode($json);
}
如果我转储$url,我会得到:
https://user:pass@domain.com/wp-json/wc/v3/products?page=5&per_page=100&status=publish
据我所知,这似乎是有效的。将其放入 Postman 中,我得到了 100 条记录的第 5 页,正如预期的那样。但是,如果我在我的系统中运行它,我每次都会得到第一页。
然后,如果我交换page 和per_page 回合,我会得到我想要的页面,但只有10 条记录,这是默认的,而不是我要求的100 条。当然,如果我把状态放在首位,我也会得到非活动/存档的产品。
此外,如果我将 URL 更改为 Pipedream URL,我可以清楚地看到所有 3 个参数都被列出。
最后,我通过首先添加t=1 参数作为虚拟参数进行测试,然后其余参数都可以正常工作,我会得到我的第 5 页 100 条记录。
如果有人可以帮助或指出正确的方向,将不胜感激。
干杯, 汤姆
【问题讨论】:
标签: php wordpress laravel woocommerce