在 Woocommerce 中使用 SQL 查询更新产品价格缓存问题

Updating product prices cache issue using a SQL query in Woocommerce

我有一个 SQL 脚本,用于同步和调整每天上传到服务器的文本文档的正常价格。

新价格被写入数据库,我在查看数据库时看到了它们。它们正确显示在 _regular_price 字段中。问题是前端显示旧价格.. 直到我手动重新更新后端的每个产品。因为我有成千上万的产品,所以它既无效又乏味。

我错过了什么?

可变产品价格缓存在wp_optionstable中作为瞬态...

因此您还需要通过 SQL 删除每个变量产品 ID,如下所示:

DELETE FROM `wp_options` WHERE `wp_options`.`option_name` LIKE '_transient_timeout_wc_var_prices_1234'
DELETE FROM `wp_options` WHERE `wp_options`.`option_name` LIKE '_transient_wc_var_prices_1234'

其中 1234(最后)是可变产品 ID。

所以以编程方式(其中 $product_id 是动态变量产品 ID):

global $wpdb;

$wpdb->query( "
    DELETE FROM {$wpdb->prefix}options 
    WHERE {$wpdb->prefix}options.option_name LIKE '_transient_timeout_wc_var_prices_$product_id'
" );

$wpdb->query( "
    DELETE FROM {$wpdb->prefix}options 
    WHERE {$wpdb->prefix}options.option_name LIKE '_transient_wc_var_prices_$product_id'
" );

这将删除目标变量产品缓存…


其他产品 (简单举例)没有缓存...更新价格时有2种情况:

1) 商品在售:

  • _price_sale_price 将有折扣产品价格。
  • _regular_price 将有正常的产品价格(非折扣)

2) 产品未打折:

  • _price_regular_price 将具有正常产品价格。
  • _sale_price 将为空

So _price and _regular_price need always to be updated…