在 WooCommerce 购物车中添加产品元数据作为费用
Add the values of product meta as fee in WooCommerce cart
在意大利,处理电子产品需要支付一定的费用,必须在购买时支付。
这个“ecofee”是针对每个产品的。
我为每个名为 meta_product_grossecofee
的产品设置了一个特定的元数据
我想将此元字段的值转换为购物车的费用。
这是我试过的代码,但没有得到想要的结果。有什么建议吗?
add_action( 'woocommerce_cart_calculate_fees', 'ecofee_display' );
function ecofee_display(){
global $product;
$ecofee = $product->get_meta('meta_product_grossecofee');
if ($ecofee) {
WC()->cart->add_fee(__('Ecofee: ', 'txtdomain'), $ecofee);
}
}
购物车可以包含多个产品,因此global $product
不适用于此处。
相反,您可以浏览购物车,对于存在元数据的每个产品,将其价值添加到费用中。
如果$fee大于0,就可以申请了。
所以你得到:
function action_woocommerce_cart_calculate_fees( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Initialize
$fee = 0;
// Loop through cart contents
foreach ( $cart->get_cart_contents() as $cart_item ) {
// Get meta
$ecofee = $cart_item['data']->get_meta( 'meta_product_grossecofee', true );
// NOT empty & variable is a number
if ( ! empty ( $ecofee ) && is_numeric( $ecofee ) ) {
// Addition
$fee += $ecofee;
}
}
// If greater than 0
if ( $fee > 0 ) {
// Add additional fee (total)
$cart->add_fee( __( 'Ecofee', 'woocommerce' ), $fee, false );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1 );
注意:如果要考虑每个产品的数量:
替换
// NOT empty & variable is a number
if ( ! empty ( $ecofee ) && is_numeric( $ecofee ) ) {
// Addition
$fee += $ecofee;
}
有
// NOT empty & variable is a number
if ( ! empty ( $ecofee ) && is_numeric( $ecofee ) ) {
// Get product quantity in cart
$quantity = $cart_item['quantity'];
// Addition
$fee += $ecofee * $quantity;
}
在意大利,处理电子产品需要支付一定的费用,必须在购买时支付。
这个“ecofee”是针对每个产品的。
我为每个名为 meta_product_grossecofee
我想将此元字段的值转换为购物车的费用。
这是我试过的代码,但没有得到想要的结果。有什么建议吗?
add_action( 'woocommerce_cart_calculate_fees', 'ecofee_display' );
function ecofee_display(){
global $product;
$ecofee = $product->get_meta('meta_product_grossecofee');
if ($ecofee) {
WC()->cart->add_fee(__('Ecofee: ', 'txtdomain'), $ecofee);
}
}
购物车可以包含多个产品,因此global $product
不适用于此处。
相反,您可以浏览购物车,对于存在元数据的每个产品,将其价值添加到费用中。
如果$fee大于0,就可以申请了。
所以你得到:
function action_woocommerce_cart_calculate_fees( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Initialize
$fee = 0;
// Loop through cart contents
foreach ( $cart->get_cart_contents() as $cart_item ) {
// Get meta
$ecofee = $cart_item['data']->get_meta( 'meta_product_grossecofee', true );
// NOT empty & variable is a number
if ( ! empty ( $ecofee ) && is_numeric( $ecofee ) ) {
// Addition
$fee += $ecofee;
}
}
// If greater than 0
if ( $fee > 0 ) {
// Add additional fee (total)
$cart->add_fee( __( 'Ecofee', 'woocommerce' ), $fee, false );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1 );
注意:如果要考虑每个产品的数量:
替换
// NOT empty & variable is a number
if ( ! empty ( $ecofee ) && is_numeric( $ecofee ) ) {
// Addition
$fee += $ecofee;
}
有
// NOT empty & variable is a number
if ( ! empty ( $ecofee ) && is_numeric( $ecofee ) ) {
// Get product quantity in cart
$quantity = $cart_item['quantity'];
// Addition
$fee += $ecofee * $quantity;
}