我有一个 SQL 脚本,应该与服务器上每天上传的文本文档进行比较来同步和调整常规价格。
新价格被写入数据库,我在查看数据库时看到它们。它们正确显示在
_regular_price
字段中。问题是前端显示旧价格..直到我手动重新更新后端中的每个产品。由于我有数千种产品,因此效率低下且乏味。
我错过了什么?
可变产品价格作为瞬态缓存在
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