【发布时间】:2021-08-08 12:30:21
【问题描述】:
我正在使用 WooCommerce REST API v3,远程对产品和类别执行基本 CRUD 操作 - WP 托管在一台服务器(例如 example.com)上,执行 CRUD 的逻辑在另一台服务器上(例如 mysite .com)。
虽然我能够列出、创建和更新产品类别,但我无法删除它们。我要删除的所有类别都没有子类别,也没有附加产品。
这是我的代码:
$consumer_key = "<consumer_key>";
$consumer_secret = "<consumer_secret>";
$catUrl = "https://www.example.com/wp-json/wc/v3/products/categories/";
$catId = 63; // id of the category which I want to delete
$url = $catUrl.$catId."?force=true&consumer_key=".$consumer_key."&consumer_secret=".$consumer_secret;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$response = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "<pre>";
if(isJson($result)) {
print_r(json_decode($result,true));
} else {
print_r($result);
}
echo "<hr>";
print_r($response);
echo "</pre>";
echo $url;
cURL 返回我所期望的,what the documentation says,状态码是200,但是当我查看我的 WordPress 网站中的产品类别时,该类别仍然存在。
我也尝试过将请求类型更改为 POST(服务器不支持 DELETE 作为自定义请求类型),如下所示:
$url = $catUrl.$catId."?consumer_key=".$consumer_key."&consumer_secret=".$consumer_secret;
$data = array(
"force" => true
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$result = curl_exec($ch);
我的猜测是 API 不知道我正在尝试删除某些内容,这就是为什么它只是返回有关类别的信息(force=true 不足以删除类别)。
是否有任何其他参数可以传递给 WC API,以使其删除我希望它删除的类别?如果有,怎么做?
【问题讨论】: