无法通过 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;
我正在使用 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;