wordpress Woocommerce程序化设置产品销售价格问题

tag5nh1u  于 2022-11-22  发布在  WordPress
关注(0)|答案(3)|浏览(161)

我正在写一个脚本的电子商务与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,我就看不到正常价格或销售价格。

vnzz0bqm

vnzz0bqm1#

您应该这样做:

$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
}
q0qdq0h2

q0qdq0h22#

请尝试以下代码,这可能对您有所帮助

$price = '40';
$sale_price = array();
$sale_price[1] = '20';
$sale_price[2] = strtotime('2020-02-10');
$sale_price[3] = strtotime('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] );
}
fnvucqvd

fnvucqvd3#

诀窍是清除瞬时缓存。
PUT /wp-json/wc/v3/系统状态/工具/清除 transient

相关问题