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

问题描述 投票:0回答:1

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

新价格被写入数据库,我在查看数据库时看到它们。它们正确显示在

_regular_price
字段中。问题是前端显示旧价格..直到我手动重新更新后端中的每个产品。由于我有数千种产品,因此效率低下且乏味。

我错过了什么?

php sql woocommerce transient product-price
1个回答
3
投票

可变产品价格作为瞬态缓存在

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
需要始终更新......

© www.soinside.com 2019 - 2024. All rights reserved.