如何解决为WooCommerce中的已定义$ product或$ variation对象重新生成瞬变 文档和相关主题:
我真的很想知道是否有一种方法可以重新生成给定产品或变体对象的所有本机瞬态。
我处于显示动态价格的情况,一切都很好。但是我需要更新wc_prices_{id}
之类的瞬态,以使其考虑到这个新的自定义价格。如果不是,那么首页加载会很糟糕(尤其是在一次显示多个产品的商店页面上)。
我迷上了woocommerce_product_variation_get_price
,woocommerce_product_variation_get_regular_price
,woocommerce_variation_prices_price
和woocommerce_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脚本来在产品或变体对象上调用它。
你们知道这个任务的解决方案吗?
亲切的问候。
解决方法
与变化的缓存价格有关的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
过滤器挂钩将以更有效的方式刷新缓存的价格变化,而不会在触发这些挂钩时立即删除相关的瞬变。
文档和相关主题:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。