在 Woocommerce 中使用 SQL 查询更新产品价格缓存问题
Updating product prices cache issue using a SQL query in Woocommerce
我有一个 SQL 脚本,用于同步和调整每天上传到服务器的文本文档的正常价格。
新价格被写入数据库,我在查看数据库时看到了它们。它们正确显示在 _regular_price
字段中。问题是前端显示旧价格.. 直到我手动重新更新后端的每个产品。因为我有成千上万的产品,所以它既无效又乏味。
我错过了什么?
可变产品价格缓存在wp_options
table中作为瞬态...
因此您还需要通过 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…
我有一个 SQL 脚本,用于同步和调整每天上传到服务器的文本文档的正常价格。
新价格被写入数据库,我在查看数据库时看到了它们。它们正确显示在 _regular_price
字段中。问题是前端显示旧价格.. 直到我手动重新更新后端的每个产品。因为我有成千上万的产品,所以它既无效又乏味。
我错过了什么?
可变产品价格缓存在wp_options
table中作为瞬态...
因此您还需要通过 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…