【问题标题】:Unable to delete product category via WooCommerce REST API无法通过 WooCommerce REST API 删除产品类别
【发布时间】: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,以使其删除我希望它删除的类别?如果有,怎么做?

【问题讨论】:

    标签: php woocommerce-rest-api


    【解决方案1】:

    我已经设法通过添加一个额外的参数来解决它 - _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;
    

    【讨论】:

      猜你喜欢
      • 2017-06-06
      • 2018-10-22
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多