如果值为0 wooCommerce(包括产品变体),是否有办法使销售价格为零

我有一张从我​​的客户后端库存系统中导出的工作表。它包括销售价格和零售价格。问题是销售价格,如果没有价格,则使用“ 0”作为值,这反过来意味着当产品更新运行时,产品实际上是免费的

我从这里尝试了一些选择。这个似乎效果最好

add_action('woocommerce_before_single_product','check_sale_price',40 );
function check_sale_price() {
global $product;
if ( $product->sale_price == '0' ) {
  $price = $product->regular_price;
  $product->sale_price = $price;
  $product->price = $price;
  global $wpdb;
  $wpdb->get_results( 'UPDATE wp_postmeta SET meta_value='.$price.' WHERE meta_key="_sale_price" AND post_id='.$product->id,OBJECT );
  $wpdb->get_results( 'UPDATE wp_postmeta SET meta_value='.$price.' WHERE meta_key="_price" AND post_id='.$product->id,OBJECT );
}
}

但这并没有更新我所有可变产品,而是仅更新简单产品

如果此代码还可以更新产品变化中产品价格为“ 0”的产品,并且在这里有人可以帮助我,那将是非常棒的

lujingyu666666 回答:如果值为0 wooCommerce(包括产品变体),是否有办法使销售价格为零

经过测试并可以与查询一起使用,可以在函数中使用它。

尝试一下($price = "set you price"$product->id = "product id"

UPDATE wp_postmeta as pm
    JOIN  wp_postmeta as pm2 ON pm.post_id = pm2.post_id
    SET pm.meta_value = ( $price )
    WHERE pm.meta_key LIKE '_sale_price'
      AND pm2.meta_key LIKE '_price'
      AND pm.post_id IN
        ( SELECT p2.ID
         FROM wp_posts AS p
         JOIN wp_posts AS p2 ON p2.post_parent = p.ID
         WHERE p.post_type = 'product'
           AND p.post_status = 'publish'
           AND p.ID = $product->id
           AND p2.post_type = 'product_variation'
           AND p2.post_status = 'publish' ); 
,

尝试此更新产品价格

    add_action('woocommerce_before_single_product','check_sale_price',40 );
function check_sale_price() {
global $product;
//update product price 
if ( $product->get_sale_price() == '0' ) {
        $price = $product->get_price();
        $product->set_sale_price($price); 
        $product->set_price($price); 
        $product->save(); 
}
}
,

尝试一下

  add_action('woocommerce_before_single_product',40 );
function check_sale_price() {
    global $product;
    //update product price 
    $available_variations = $product->get_available_variations();
    foreach($available_variations as $variation ){
        $variation_id = $variation['variation_id'];
        $_product = new WC_Product_Variation($variation_id);

        if ( $product->get_sale_price() == '0' ) {
                $price = $_product->get_price();
                $_product->set_sale_price($price); 
                $_product->set_price($price); 
                $_product->save(); 
        }
    }
    $product->save(); 
}
本文链接:https://www.f2er.com/3147032.html

大家都在问