Есть ли способ сделать продажную цену нулевой, если значение равно 0 wooCommerce, включая варианты продукта? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть лист, который экспортируется из системы управления запасами моих клиентов. это включает цену продажи и розничную цену. проблема заключается в продажной цене, если нет цены, в которой они используют «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 "в вариациях продукта, и если кто-то здесь может помочь, я буду очень рад

Ответы [ 3 ]

0 голосов
/ 07 ноября 2019

Попробуйте обновить цену продукта

    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(); 
}
}
0 голосов
/ 11 ноября 2019

Попробуйте

1002 *
0 голосов
/ 07 ноября 2019

Протестировано и работает с запросом, вы можете использовать его в своей функции.

Попробуйте это (где, $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' ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...