Woocommerce "woocommerce_product_get_price" 问题
Woocommerce "woocommerce_product_get_price" issue
显示自定义价格的过滤器 "woocommerce_product_get_price" 有效,但我偶然发现此过滤器在单个产品页面中触发了五次,在存档产品页面中触发了六次。我已经通过以下方式检查了 var_damp:
add_filter('woocommerce_product_get_price', 'get_ws_price', 10, 2);
function get_ws_price($price, $product){
var_dump('HI!');
$price = 99.99;
return $price;
}
这对我来说是个问题,我使用这个过滤器来执行复杂的代码并且重复了很多次。
我做错了什么?
有没有其他方法可以用另一个钩子修改商品的价格?
WooCommerce 也有这个问题,它通过缓存来解决。它使用 WordPress get_transient() 和 set_transient() 在 WordPress 数据库中保存一个版本。这允许计算用于多个请求。此外,计算保存在全局对象中,以便在单个请求中可以从内存对象中检索计算。
WC_Product_Variable_Data_Store_CPT::read_price_data() 文件 '...\wp-content\plugins\woocommerce\includes\data-stores\class-wc-product-variable-data-store-cpt.php' 是这种技术的一个很好的例子。
您可以选择不使用过滤器并编写自己的函数来替换 get_price_html()
。使用新功能,您可以覆盖您的 WooCommerce 模板,例如单个产品页面 woocommerce\templates\single-product\price.php
,并用您自己的自定义功能替换对此功能的任何调用。这样就只会调用一次。
显示自定义价格的过滤器 "woocommerce_product_get_price" 有效,但我偶然发现此过滤器在单个产品页面中触发了五次,在存档产品页面中触发了六次。我已经通过以下方式检查了 var_damp:
add_filter('woocommerce_product_get_price', 'get_ws_price', 10, 2);
function get_ws_price($price, $product){
var_dump('HI!');
$price = 99.99;
return $price;
}
这对我来说是个问题,我使用这个过滤器来执行复杂的代码并且重复了很多次。
我做错了什么? 有没有其他方法可以用另一个钩子修改商品的价格?
WooCommerce 也有这个问题,它通过缓存来解决。它使用 WordPress get_transient() 和 set_transient() 在 WordPress 数据库中保存一个版本。这允许计算用于多个请求。此外,计算保存在全局对象中,以便在单个请求中可以从内存对象中检索计算。
WC_Product_Variable_Data_Store_CPT::read_price_data() 文件 '...\wp-content\plugins\woocommerce\includes\data-stores\class-wc-product-variable-data-store-cpt.php' 是这种技术的一个很好的例子。
您可以选择不使用过滤器并编写自己的函数来替换 get_price_html()
。使用新功能,您可以覆盖您的 WooCommerce 模板,例如单个产品页面 woocommerce\templates\single-product\price.php
,并用您自己的自定义功能替换对此功能的任何调用。这样就只会调用一次。