MySQL query to change variable product price in WooCommerce

蹲街弑〆低调 提交于 2019-12-07 16:19:59

问题


I want to change the prices for variable products in woocommerce. I tried with below MySQL query to do it,

UPDATE wp_postmeta 
SET meta_value = price_value 
WHERE post_id = variation_id AND meta_key = '_sale_price';

but its updating only in backend(DB and admin area) not in front-end. Actually in front-end its not showing sale price also. As I'm not good at SQL, is there any code snippet or WooCommerce hook which allows me to change the price for a variable product?

Thanks.


回答1:


If you want to change the Product Price which is on Sale you have to update both _sale_price and _price with same value.

//for Regular Price
UPDATE wp_postmeta 
SET meta_value = diff_price_value 
WHERE post_id = variation_id AND meta_key = '_regular_price';

//for Price
UPDATE wp_postmeta 
SET meta_value = price_value 
WHERE post_id = variation_id AND meta_key = '_price';

//for Sale Price
UPDATE wp_postmeta 
SET meta_value = price_value 
WHERE post_id = variation_id AND meta_key = '_sale_price';

ADDED If you want to merge all the above query into a single query you can use this one:

UPDATE wp_postmeta
SET meta_key = CASE
                   WHEN meta_key = "_regular_price" THEN diff_price_value
                   WHEN meta_key = "_price" THEN price_value
                   WHEN meta_key = "_sale_price" THEN price_value
                   ELSE meta_key
               END
WHERE post_id = variation_id
  AND meta_key IN ("_regular_price", "_price", "_sale_price");

Also you have to delete WooCommerce product price caching which is stored in wp_options table under _transient_timeout_wc_var_prices_{{post_id}} and _transient_wc_var_prices_{{post_id}} in option_name

DELETE
FROM `wp_options`
WHERE (`option_name` LIKE '_transient_wc_var_prices_%'
    OR `option_name` LIKE '_transient_timeout_wc_var_prices_%')

All the above query is tested and worked for me.

Before running this query do take a database backup

Reference: Copy WooCommerce products Sale prices to regular prices and reset Sale prices

Hope this helps!



来源:https://stackoverflow.com/questions/41545493/mysql-query-to-change-variable-product-price-in-woocommerce

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!