mysql - Woocommerce MySQL 更新特定类别产品的价格

标签 mysql wordpress woocommerce

我正在尝试将特定类别中的某些产品的价格提高一定百分比。我想出了应该工作的 select 语句,但在将它与 update 语句结合起来时遇到了问题。这是我所拥有的:

SELECT * from `wp_term_relationships` where term_taxonomy_id=376 and object_id in(select ID from `wp_posts` where `post_type`='product' and     post_status='publish' and ID=wp_term_relationships.object_id) 

这为我提供了我需要的产品。我可以对这些产品运行更新(如下所示)还是需要以某种方式组合它们?

update wp_postmeta set meta_value = meta_value * 1.40 where meta_key='_regular_price'

最佳答案

这是一个 MySQL 查询,可以满足您的目的。

更新_regular_price

UPDATE 
    `wp_postmeta` 
SET 
    `meta_value` = ROUND(`meta_value` * 1.40, 2) 
WHERE 
    meta_key = '_regular_price' 
    AND `post_id` IN (
        SELECT 
            `object_id` AS product_id 
        FROM 
            `wp_term_relationships` 
        WHERE 
            term_taxonomy_id = 376
            AND `object_id` IN (
                SELECT 
                    `ID` 
                FROM 
                    `wp_posts` 
                WHERE 
                    `post_type` = 'product' 
                    AND `post_status` = 'publish' 
                    AND `ID` = `object_id`
            )
    );

更新_price

UPDATE 
    `wp_postmeta` 
SET 
    `meta_value` = ROUND(`meta_value` * 1.40, 2) 
WHERE 
    meta_key = '_price' 
    AND `post_id` IN (
        SELECT 
            `object_id` AS product_id 
        FROM 
            `wp_term_relationships` 
        WHERE 
            term_taxonomy_id = 376
            AND `object_id` IN (
                SELECT 
                    `ID` 
                FROM 
                    `wp_posts` 
                WHERE 
                    `post_type` = 'product' 
                    AND `post_status` = 'publish' 
                    AND `ID` = `object_id`
            )
    );

您还必须删除存储在 wp_options_transient_timeout_wc_var_prices_{{post_id}} 下的 WooCommerce 产品价格缓存_transient_wc_var_prices_{{post_id}}option_name

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

以上查询已经过测试,对我有效。

在运行这个查询之前做一个数据库备份

希望这对您有所帮助!

关于mysql - Woocommerce MySQL 更新特定类别产品的价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45825554/

相关文章:

mysql - 使用现有的 mysql 表时巧妙地跳过 Evolution

当 LIKE 返回正确数量的结果时,Mysql MATCH 返回 0?

javascript - 在 WordPress 前端添加选择

javascript - 如何将变量传递给functions.php(Wordpress 站点)中的函数

mysql - Woocommerce 产品类别放入 mysql 中的单独表中

mysql - 如何计算 MySQL 中的每日可用时间?

c# - ASP.NET:插入后按钮不起作用 'namespace'

wordpress - Woocommerce API 限制和使用更少的资源

php - 以编程方式创建的产品不会显示在 WooCommerce 上

php - 对于特定国家/地区,在 Woocommerce 结账时将城市替换为所选的州值