无法通过 WooCommerce REST 删除产品类别 API

Unable to delete product category via WooCommerce REST API

我正在使用 WooCommerce REST API v3,远程对产品和类别执行基本的 CRUD 操作 - WP 托管在一台服务器上(例如 example.com),执行CRUD 在另一台服务器上(例如 mysite.com)。

虽然我可以列出、创建和更新产品类别,但我无法删除它们。 None 个我要删除的类别有子类别,但没有附加产品。

这是我的代码:

$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 returns 我所期望的 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,以使其删除我希望它删除的类别?如果是,怎么做?

我已经设法通过添加一个额外的参数来解决它 - _method=DELETE - 感谢关于如何进行覆盖的说明 found here

工作代码:

$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."?_method=DELETE&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);

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;