4

我正在尝试从 csv 文件将大约 1000 个优惠券代码导入 woocommerce

我已经使用了这段代码,但它不起作用

此代码可以程序生成 1 张优惠券:

$coupon_code = 'UNIQUECODE'; // Code
$amount = '10'; // Amount
$discount_type = 'fixed_cart'; // Type: fixed_cart, percent, fixed_product, percent_product
$coupon = array(
'post_title' => $coupon_code,
'post_content' => '',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'shop_coupon'
);
$new_coupon_id = wp_insert_post( $coupon );
// Add meta
update_post_meta( $new_coupon_id, 'discount_type', $discount_type );
update_post_meta( $new_coupon_id, 'coupon_amount', $amount );
update_post_meta( $new_coupon_id, 'individual_use', 'no' );
update_post_meta( $new_coupon_id, 'product_ids', '' );
update_post_meta( $new_coupon_id, 'exclude_product_ids', '' );
update_post_meta( $new_coupon_id, 'usage_limit', '' );
update_post_meta( $new_coupon_id, 'expiry_date', '' );
update_post_meta( $new_coupon_id, 'apply_before_tax', 'yes' );
update_post_meta( $new_coupon_id, 'free_shipping', 'no' );

我需要为 csv 文件的每一行执行此功能

请你帮帮我,我今天需要解决方案。

4

1 回答 1

0

如果有人仍在寻找答案,这可以通过 for each 循环来完成。我不知道具体的功能,但步骤非常简单,谷歌会帮助你。

首先将 CSV 导入数组。与使用 MySQL 查询的方式非常相似。

然后你做一个 PHPforeach循环。

在循环内,您使用问题中的代码填充数组中的变量。例如,

 $coupon_code = '$array[code]'; // Code
 $amount = '$array[amount]'; // Amount
 $discount_type = '$array[discount_type]';

您还可以在元部分中包含数组数据,如下所示:

 update_post_meta( $new_coupon_id, 'product_ids', $array[ids] );
 update_post_meta( $new_coupon_id, 'exclude_product_ids', $array[exclude] );
 update_post_meta( $new_coupon_id, 'usage_limit', $array[limit] );
 update_post_meta( $new_coupon_id, 'expiry_date', $array[expires] );

同样,这只是可以执行 iCode98 要求的功能的概述。php 手册有很多信息,并且有很多关于将 csv 转换为数组和每个循环的教程。我可能对此有用,如果我构建它或者如果有人真的需要它,我会用一个工作示例来更新它。

更新:

这应该能够工作,但它确实取决于输入文件

$file = fopen('myCSVFile.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
  //$line is an array of the csv elements, This is where you would add the script above. 
  //Each column of the csv is in the array by id. So if you have: 
  //`a,b,c` Then `a=$line[0]` `b=$line[1]` `c=$line[2]` and so on.
}
fclose($file);
于 2015-03-03T04:34:52.823 回答