使用 WPDB 查询更新 Woocommerce 中的产品变体价格

Posted

技术标签:

【中文标题】使用 WPDB 查询更新 Woocommerce 中的产品变体价格【英文标题】:Update product variations prices in Woocommerce with WPDB query 【发布时间】:2017-05-05 12:51:39 【问题描述】:

我正在使用 WordPress 4.7.4 和 WooCommerce 3.0.5。

我使用meta_id 更新了_sale_price_price_regular_price,代码如下:

   $meta_tbl = $wpdb->prefix.'postmeta';
   foreach ($_POST['loop'] as $loop_k => $loop_v) 
        $wpdb->update(
            $meta_tbl,
                array( 'meta_value' => $loop_v['price'] ),
                array( 'meta_id' => $loop_v['price_meta_id'] ),
                array( '%d' )
            );
        $wpdb->update(
            $meta_tbl,
                array( 'meta_value' => $loop_v['regular_price'] ),
                array( 'meta_id' => $loop_v['regular_price_meta_id'] ),
                array( '%d' )
            );
        $wpdb->update(
            $meta_tbl,
                array( 'meta_value' => $loop_v['sale_price'] ),
                array( 'meta_id' => $loop_v['sale_price_meta_id'] ),
                array( '%d' )
            );
  

但商店页面仍然显示产品的旧价格!我怎样才能正确地做到这一点?

【问题讨论】:

【参考方案1】:

尝试在您的代码后添加这一行。

wc_delete_product_transients( $post_id );

// $post_id 替换为产品ID

【讨论】:

对我没有用。除购物车外,仍然到处显示错误的价格。 @KarlJohanVallner 您是否使用任何价格调整插件?也尝试在 WooCoommerce -> 状态 -> 工具下删除临时缓存 没有插件。出于某种奇怪的原因,清除缓存也无济于事。但是当我手动更新“产品”下的价格时,它的效果会膨胀。

以上是关于使用 WPDB 查询更新 Woocommerce 中的产品变体价格的主要内容,如果未能解决你的问题,请参考以下文章

在woocommerce下订单后获取最新的订单ID

在 Woocommerce 之前通过 _sale_price_dates_to 获取产品 ID

使用变量时的 Wordpress 数据库查询 ($wpdb) 错误

在 wordpress 中使用 $wpdb 运行 SQL 命令

wpdb 查询返回错误结果

使用 $wpdb 类选择 MySQL 视图