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

时间:2018-02-19 07:34:41

标签: php sql woocommerce product price

我有一个SQL脚本,应该比较每天在服务器上上传的文本文档来同步和调整常规价格。

问题是新价格会写入数据库,我在查看数据库时会看到它们。他们甚至在正常价格领域展示。问题是前端显示旧价格。旧价格显示在前端,直到我手动重新更新后端的每个产品。由于我有数以千计的产品,因此无效且乏味。

我错过了什么?

1 个答案:

答案 0 :(得分: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总是需要更新......