php wordpress woocommerce cart product

php - Cambiar los precios de los artículos del carrito en Woocommerce 3



wordpress cart (2)

Estoy tratando de cambiar el precio del producto en el carrito usando la siguiente función:

add_action( ''woocommerce_before_shipping_calculator'', ''add_custom_price'' ); function add_custom_price( $cart_object ) { foreach ( $cart_object->cart_contents as $key => $value ) { $value[''data'']->price = 400; } }

Funcionaba correctamente en WooCommerce versión 2.6.x pero ya no funcionaba en la versión 3.0+

¿Cómo puedo hacer que funcione en WooCommerce Versión 3.0+?

Gracias.


Con WooCommerce versión 3.2.6, la respuesta de @ LoicTheAztec funciona para mí si aumento la prioridad a 1000.

add_action( ''woocommerce_before_calculate_totals'', ''add_custom_price'', 1000, 1);

Intenté valores de prioridad de 10 , 99 y 999 pero el precio y el total en mi carrito no cambiaron (aunque pude confirmar con get_price() que set_price() realmente había establecido el precio del artículo.

Tengo un gancho personalizado que agrega una tarifa a mi carrito y estoy usando un complemento de terceros que agrega atributos de producto. Sospecho que estos "complementos" de WooCommerce introducen demoras que requieren que demore mi acción personalizada.


Actualización (septiembre de 2018)

Con WooCommerce versión 3.0+ necesitas:

Aquí está el código:

add_action( ''woocommerce_before_calculate_totals'', ''add_custom_price'', 20, 1); function add_custom_price( $cart_obj ) { // This is necessary for WC 3.0+ if ( is_admin() && ! defined( ''DOING_AJAX'' ) ) return; // Avoiding hook repetition (when using price calculations for example) if ( did_action( ''woocommerce_before_calculate_totals'' ) >= 2 ) return; // Loop through cart items foreach ( $cart_obj->get_cart() as $cart_item ) { $cart_item[''data'']->set_price( 40 ); } }

El Código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.

Este código está probado y funciona.

Nota: puede aumentar la prioridad de enlace de 20 a 1000 (o incluso 2000 ) al usar algunos complementos específicos u otras personalizaciones.

Relacionado: