【问题标题】:MySQL query to change variable product price in WooCommerce在 WooCommerce 中更改可变产品价格的 MySQL 查询
【发布时间】:2017-05-23 13:33:42
【问题描述】:

我想更改 woocommerce 中可变产品的价格。我尝试使用下面的 MySQL 查询来做到这一点,

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

但它只在后端(数据库和管理区域)而不是在前端更新。实际上在前端它也没有显示销售价格。 由于我不擅长 SQL,是否有任何代码 sn-p 或 WooCommerce 挂钩可以让我更改可变产品的价格?

谢谢。

【问题讨论】:

    标签: php mysql wordpress woocommerce product


    【解决方案1】:

    如果您想更改 Sale 中的产品价格,您有 将_sale_price_price 更新为相同的值。

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

    添加 如果您想将上述所有查询合并为一个查询,您可以使用这个:

    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");
    

    您还必须删除 WooCommerce 产品价格缓存,该缓存存储在 option_name_transient_timeout_wc_var_prices_{{post_id}} _transient_wc_var_prices_{{post_id}} 下的 wp_options 表中

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

    以上所有查询都经过测试并为我工作。

    在运行此查询之前,请备份数据库

    参考:Copy WooCommerce products Sale prices to regular prices and reset Sale prices

    希望这会有所帮助!

    【讨论】:

    • 谢谢。有什么方法可以将它们组合成一个查询吗?
    • @karbyl_subbu:我已经更新了我的答案,请试一试。
    • @RaunakGupta ,我需要你的帮助here
    • 由于某种原因,更新表格不会影响产品的价格。我已经改变了所有这些(价格,常规和销售)。是否有某种缓存或数据保存在某处的数组中?
    • 谢谢!我找到了一个解决方案,也许它与您建议的链接相同。首先,我必须确保我更新了所有这些元键:“_price”、“_regular_price”、“_sale_price”、“_min_variation_price”、“_max_variation_price”、“_min_variation_regular_price”、“_max_variation_regular_price”、“_min_variation_sale_price”、“_max_variation_sale_price”编辑了我拥有的所有产品中的权重字段(从 0 到 0 批量编辑),这可能导致缓存刷新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2017-11-24
    • 1970-01-01
    • 2017-09-01
    • 2018-01-21
    • 2017-05-12
    相关资源
    最近更新 更多