结合本主题更新WooCommerce产品价格和库存,并结合fgetcsv
和fopen
我的目标是从csv文件更新woocommerce网站上的产品库存。在cron和wordpress的restapi的帮助下,我几乎可以实时更新股票。如果完成了,我可能会尝试将其放入函数中。php,以便每次加载站点时库存都会发生变化。
示例。csv有两列:
SKU
和inStock
。
第1步是把csv放到一个数组中。使用fgetcsv
和fopen
,可以这样做:
$csv = array();
$file = fopen('EXAMPLE.csv', 'r');
while (($result = fgetcsv($file, 0, ";")) !== false)
{
$csv[] = $result;
}
现在,我将csv作为一个数组。第二步是使用此数组更改wordpress中的库存量。首先检查SKU是否存在,如果存在,则更改与SKU相关的产品的库存数量。
继续代码
$arr = print_r($csv);
foreach ( $arr as $single ) {
$product_id = wc_get_product_id_by_sku( $single['sku'] );
if ( ! $product_id ) {
continue;
}
$product = new WC_Product( $product_id );
if ( ! $product ) {
continue;
}
$product->set_stock_quantity( $single['inStock'] );
$product->save();
}
?>
有一个问题:$arr=print_r($csv);没有返回正确的数组。当我手动将其更改为:
$arr = array(
array( 'SKU' => '123456787', 'inStock' => '2' ),
array( 'SKU' => '123456788', 'inStock' => '1' ),
array( 'SKU' => '123456789', 'inStock' => '8' )
);
这就是问题所在<代码>$arr=打印($csv)代码>输出
Array
(
[0] => Array
(
[0] => EAN
[1] => inStock
)
[1] => Array
(
[0] => 123456787
[1] => 2
)
[2] => Array
(
[0] => 123456788
[1] => 1
)
[3] => Array
(
[0] => 123456789
[1] => 8
)
)
我搜索了一下,发现有各种各样的解决方案,但都没有结合起来。也许这是一个简单的数组修复。我几乎什么都试过了。。你能帮帮我吗?最好的解决方案是什么?
找到了答案,得到了朋友的大力帮助!
要制作正确的阵列,请执行以下操作:
$csv[] = $result;
与:
$csv[] = array( 'SKU' => $result[0], 'inStock' => $result[1]);
而且
删除$arr=print\r($csv)代码>
代码变成:
$csv = array();
$file = fopen('example.csv', 'r');
while (($result = fgetcsv($file, 0, ";")) !== false)
{
$csv[] = array( 'SKU' => $result[0], 'Stock' => $result[1]);
}
foreach ( $csv as $single ) {
$product_id = wc_get_product_id_by_sku( $single['SKU'] );
if ( ! $product_id ) {
continue;
}
$product = new WC_Product( $product_id );
if ( ! $product ) {
continue;
}
$product->set_stock_quantity( $single['Stock'] );
$product->save();
}
这样做的目的是,它读取包含两列的csv:SKU
和Stock
,然后检查电子商务中是否存在SKU。如果这样做,它将改变SKU的库存。