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

时间:2017-08-22 19:29:47

标签: mysql wordpress woocommerce

我试图将特定类别的特定产品的价格提高一个百分点。我想出了应该有效的select语句,但是在将它与update语句组合时遇到了麻烦。这就是我所拥有的:

<!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8" />
 <title>Weather App</title>    
   <link href="Content/bootstrap.min.css" rel="stylesheet" />
  <link href="style/style.css" rel="stylesheet" />
  </head>
 <body ng-app="myWeatherApp" ng-controller="myWeatherContrl">
 <div class="container">  
    <label ng-cloak>{{title}}</label>
     <ui-view></ui-view>
 </div>    
 <script src="Scripts/angular.min.js"></script>
 <script src="Scripts/angular-ui-router.min.js"></script>
 <script src="app.js"></script>    
 <script src="Scripts/controller/weathercntrl.js"></script>
 <script src="Scripts/service/weather.js"></script>
 </body>
 </html>

这给了我需要的产品。我可以在这些产品上运行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) 

2 个答案:

答案 0 :(得分:3)

这是一个符合您目的的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}} _transient_wc_var_prices_{{post_id}} 下的WooCommerce产品价格缓存{1}}

option_name

以上查询已经过测试并为我工作。

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

希望这有帮助!

答案 1 :(得分:1)

在不触及MySQL的情况下,还有另一种很酷的方法。

查看WordPress Bulk Edit

更改Screen Options以显示您拥有的所有产品。如果你有很多产品,那么你可以通过500页来实现。

全选 - &gt; Bulk Options (edit) - &gt; Select a Category应用

它还允许您以固定金额或百分比的价格提高所有价格。我希望这有助于某人。

不像MySQL那么灵活,但在某些情况下做得非常出色。