2

我真的想知道是否有办法为给定的产品或变体对象重新生成所有本机瞬变。

我处于显示动态价格的情况,一切都很好。但我需要更新瞬态wc_prices_{id},以便它考虑到这个新的自定义价格。如果没有,第一个页面加载很糟糕(尤其是在一次显示多个产品的商店页面上)。

我正在连接woocommerce_product_variation_get_price, woocommerce_product_variation_get_regular_price,woocommerce_variation_prices_pricewoocommerce_variation_prices_regular_price(简而言之,这会即时修改页面的每一个价格,如果它是包含孩子的父母,它也会更改孩子的价格以计算范围价格(最小/最大)父母的)。

在深入研究 Woocommerce 代码时,我发现哪种方法会生成瞬态价格:它read_price_data()位于wp-content/plugins/woocommerce/includes/data-stores/class-wc-product-variable-data-store-cpt.php. 但是我找不到一种方法来调用它我的 Cron Job 脚本来在产品或变体对象上调用它。

你们知道这个任务的解决方案吗?

亲切的问候。

4

1 回答 1

1

变量缓存价格中涉及的 3 个过滤器挂钩是:

  • woocommerce_variation_prices_price
  • woocommerce_variation_prices_regular_price
  • woocommerce_variation_prices_sale_price

要重新生成缓存的价格,您可以在这些钩子上使用:

wc_delete_product_transients( $variation->get_id() );

但它会减慢您的网站性能。

自 Woocommerce 3 以来引入的woocommerce_get_variation_prices_hash过滤器挂钩将允许以更有效的方式刷新缓存价格的变化,而无需在触发这些挂钩时删除相关的瞬态。

文档和相关线程:

于 2020-08-19T21:13:57.957 回答