wordpress - 以编程方式设置销售价格产品的 Woocommerce 问题
问题描述
我正在为 Woocommerce 的电子商务编写脚本,该脚本读取 csv 并为产品设置新的价格/销售价格。下面的变量是一个例子。
使用此代码,我可以设置产品的价格和销售价格,但是当销售数据过期时,价格不会恢复为正常价格。
$price = '40';
$sale_price = array();
$sale_price[1] = '20';
$sale_price[2] = '2020-02-10';
$sale_price[3] = '2020-02-11';
update_post_meta( $product_id, '_price', $price );
update_post_meta( $product_id, '_regular_price', $price);
if( !empty($sale_price) ){
update_post_meta( $product_id, '_price', $sale_price[1] );
update_post_meta( $product_id, '_sale_price', $sale_price[1] );
update_post_meta( $product_id, '_sale_price_dates_from', $sale_price[2] );
update_post_meta( $product_id, '_sale_price_dates_to', $sale_price[3] );
}
如果我不设置'_price' post_meta,我看不到正常价格或销售价格。
解决方案
你应该这样做:
$product = wc_get_product($product_id);
$price = '40';
$sale_price = array();
$sale_price[0] = '20';
$sale_price[1] = date( 'Y-m-d 00:00:00', strtotime('2020-02-10'));
$sale_price[2] = date( 'Y-m-d 23:59:59', strtotime('2020-02-11'));
if ( !is_wp_error( $product ) ) {
$product->set_price( $price );
$product->set_regular_price( $price );
if( !empty($sale_price) ){
$product->set_price( $sale_price[0] );
$product->set_sale_price( $sale_price[0] );
$product->set_date_on_sale_from( $sale_price[1] );
$product->set_date_on_sale_to( $sale_price[2] );
}
$product->save(); // save the product
}
推荐阅读
- c - 计算和打印矩阵的对角线之和
- javascript - 如何在 Angular 中使用 addEventListener 和 postMessage?
- php - 如何将日期、时间和值从单选按钮放入数据库
- c# - 逐个像素地动态绘制和显示,有一些延迟
- npm - 如何从 Nexus oss 代理获取依赖于 github 项目的 npm 包
- django - Django 测试 - 发送包含整数的数组数组
- android - 在 android 中使用改造登录
- json - 我如何在 nunjuncks 中乘以数据?
- swift - 为什么不能在swift中将可变参数标记为inout?
- vue.js - Vue Js 2 / Vue-CLI 3 / 托管时显示空白页