catalogProductUpdate 多个类别 ID

catalogProductUpdate multiple category IDs

我正在尝试更新 Magento 中许多产品的网站和类别 ID,但我遇到了问题。这是我的代码:

$client = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$productarray = array("12345" => "1,2,3", "67890" => "1,5,6");

foreach ($productarray as $product_id => $cats) {
    $update = array(
                'websites' => array(1,2,3), 
                'categories' => array($cats)
            );
    $updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}

当我 运行 此代码时,它正在更改产品以具有新的网站 ID,但它仅使用 $cats 中的第一个更新类别 ID。

例如,“12345”将只有类别 ID 1,而不是应有的类别 ID 2 或 3。

当我打印出每个产品的 $cats 是什么时,它正确地向我显示了信息(如上述示例中的“1,2,3”和“1,5,6”)。

我不确定我做了什么,但我似乎无法让它更新所有类别 ID。我有数以千计的产品 运行 通过它们都有不同的类别 ID,所以我不能手动执行此操作!

编辑 - 已解决

我更改了我的代码,现在它是这样的(有效):

$client = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$productarray = array("12345" => "1,2,3", "67890" => "1,5,6");

foreach ($productarray as $product_id => $cats) {
    $cats = explode(",", $cats);
    $update = array(
                'websites' => array(1,2,3), 
                'categories' => $cats
            );
    $updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}

类别 属性 需要一个 ID 数组,而您传递的是一个字符串。尝试使用 explode() 将其分解:

foreach ($productarray as $product_id => $cats) {
    $update = array(
        'websites' => array(1,2,3), 
        'categories' => explode(',', $cats)
    );
    $updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}