Cambiar el peso total de la orden woocomerce

Necesito cambiar el peso total del pedido en el sitio web woocommerce.

Por ejemplo: Tengo un producto 3 en un carrito: 1 – 30 g; 2 – 35; 3 – 35 g; total = 30 + 35 + 35 = 100g, pero quiero agregar el peso del paquete al peso total (30% del peso total).

Ejemplo: ((30 + 35 + 35) * 0.3) + (30 + 35 + 35) = 130g

Puedo calcularlo, pero cómo cambiar el peso total de 100g a 130g.

Para obtener el peso total utilizo get_cart_contents_weight (), pero no sé cómo establecer un nuevo valor.

Enganche en la acción de filtro correcta

Echemos un vistazo a la función get_cart_contents_weight() :

 public function get_cart_contents_weight() { $weight = 0; foreach ( $this->get_cart() as $cart_item_key => $values ) { $weight += $values['data']->get_weight() * $values['quantity']; } return apply_filters( 'woocommerce_cart_contents_weight', $weight ); } 

Hay un gancho de filtro que podemos usar: woocommerce_cart_contents_weight

Entonces podemos agregar una función a este filtro:

 add_filter('woocommerce_cart_contents_weight', 'add_package_weight_to_cart_contents_weight'); function add_package_weight_to_cart_contents_weight( $weight ) { $weight = $weight * 1.3; // add 30% return $weight; } 

Para agregar el peso del paquete a cada producto por separado, puede intentar esto:

 add_filter('woocommerce_product_get_weight', 'add_package_to_product_get_weight'); function add_package_to_product_get_weight( $weight ) { return $weight * 1.3; } 

Pero no use ambas soluciones juntas.

Está funcionando en mi extremo. Actualiza el peso total a un nuevo valor de peso.

 add_action('woocommerce_cart_collaterals', 'myprefix_cart_extra_info'); function myprefix_cart_extra_info() { global $woocommerce; echo '
'; echo '

' . __('Total Weight:', 'woocommerce'); echo ($woocommerce->cart->cart_contents_weight*0.3)+$woocommerce->cart->cart_contents_weight; echo '

'; echo '
'; }