我有一个SQL脚本,应该比较每天在服务器上上传的文本文档来同步和调整常规价格。
问题是新价格会写入数据库,我在查看数据库时会看到它们。他们甚至在正常价格领域展示。问题是前端显示旧价格。旧价格显示在前端,直到我手动重新更新后端的每个产品。由于我有数以千计的产品,因此无效且乏味。
我错过了什么?
答案 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
总是需要更新......