Php catalogProductUpdate多个类别ID
我正在尝试更新Magento中许多产品的网站和类别ID,我遇到了一些问题。这是我的密码:Php catalogProductUpdate多个类别ID,php,magento,Php,Magento,我正在尝试更新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 ($producta
$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更新类别ID
例如,“12345”将只具有类别ID 1,而不是其应有的2或3
当我打印出每种产品的$cats时,它会正确地显示信息(上面的示例为“1,2,3”和“1,5,6”)
我不确定我做了什么,但我似乎无法让它更新所有类别ID。我有数千种产品要运行,它们都有不同的类别ID,所以我不能手动执行此操作
编辑-已解决
我已经更改了代码,所以现在是这样的(可以正常工作):
categories属性需要一个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);
}
你试过传递
数组(1,2,3)
而不是“1,2,3”
(字符串)吗?我刚刚试过用数组(1,2,3)
替换数组($cats)
,这对产品有效-但是,我在手动替换,我不能对所有产品都这样做。数组中有$cats
是否有问题?我能做些什么来改变它吗?使用explode将逗号分隔的字符串拆分成一个数组我在$cats上使用explode,并将数组($cats)
替换为$cats
,这样就行了!我编辑了我的问题以展示我所做的,谢谢。
foreach ($productarray as $product_id => $cats) {
$update = array(
'websites' => array(1,2,3),
'categories' => explode(',', $cats)
);
$updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}