小编典典

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

sql

我有一个SQL脚本,该脚本应该与每天在服务器上上传的文本文档进行比较并调整常规价格。

新价格已写入数据库,在查看数据库时会看到它们。它们_regular_price在场中正确显示。问题是前端显示旧价格..直到我手动重新更新后端中的每个产品。由于我有成千上万种产品,因此无效且乏味。

我想念什么?


阅读 268

收藏
2021-05-16

共1个答案

小编典典

可变产品价格wp_options作为瞬态存储在表中’‘

因此,您还需要通过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 将为空

因此,_price并且_regular_price需要始终进行更新’‘。

2021-05-16