Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête MySQL pour modifier le prix d'un produit variable dans WooCommerce

//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';

AJOUTÉ Si vous souhaitez fusionner toutes les requêtes ci-dessus en une seule, vous pouvez utiliser celle-ci :

UPDATE wp_postmeta
SET meta_value = 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");

Vous devez également supprimer la mise en cache des prix des produits WooCommerce qui est stockée dans wp_options tableau sous _transient_timeout_wc_var_prices_{{post_id}} et _transient_wc_var_prices_{{post_id}} dans option_name

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

Toutes les requêtes ci-dessus ont été testées et ont fonctionné pour moi.

Avant d'exécuter cette requête, effectuez une sauvegarde de la base de données

Référence :Copier les prix de vente des produits WooCommerce aux prix normaux et réinitialiser les prix de vente

J'espère que cela vous aidera !