【发布时间】:2017-07-12 17:53:44
【问题描述】:
我试图覆盖包含我添加的选择框的某些产品的价格。我从头到脚关注this tutorial,并且已经研究了一段时间的修复程序。
在我的functions.php中:
function calculate_core_fee( $cart_object ) {
if( !WC()->session->__isset( "reload_checkout" )) {
/* core price */
//$additionalPrice = WC()->session->get( 'coreCharge' );
//echo $additionalPrice;
$additionalPrice = 100;
foreach ( $cart_object->cart_contents as $key => $value ) {
if( isset( $value["addOn"] ) ) {
if( isset( $value['data']->price ) ) {
/* Version before 3.0 */
$orgPrice = floatval( $value['data']->price );
echo $orgPrice . " + ";
echo $additionalPrice . " = ";
$newPrice = $value['data']->price = ( $orgPrice + $additionalPrice );
echo $newPrice;
$value['data']->price = ( $orgPrice + $additionalPrice );
} else {
/* Woocommerce 3.0 + */
$orgPrice = floatval( $value['data']->get_price() );
$value['data']->set_price( $orgPrice + $additionalPrice );
}
}
}
}
}
add_action( 'woocommerce_before_calculate_totals', 'calculate_core_fee', 99 );
有些奇怪:最后一个 if 语句检查版本兼容性(b/c Wooc 3.0 及更高版本需要“->set_price”而不是“->price”) ...但是,当我回显变量时,它仅适用于“3.0 之前的版本”。
我目前使用的是 WooCommerce 3.1.1 版。我还在我的子主题中使用了 cart.php 模板,但我已将其更新为该文件的最新版本。
我不知道出了什么问题。
【问题讨论】:
-
为什么在add_action方法中设置优先级值为99?
-
教程中的,不过我已经解决了我的问题,感谢您的查看。
标签: php wordpress woocommerce cart