Establezca programáticamente el precio de venta del producto y los precios de los artículos del carrito en Woocommerce 3

Esta es la continuación de: Establecer el precio de venta del producto mediante progtwigción en WooCommerce 3

La respuesta funciona, sin embargo, una vez que un usuario agrega el producto al carrito, el precio anterior sigue apareciendo en el proceso de pago.

¿Cómo obtener el precio de venta correcto en el carrito y en las páginas de pago para los artículos del carrito?

Cualquier ayuda es apreciada.

La parte que falta para que funcione para el carro y las páginas de pago (y también las órdenes y las notificaciones por correo electrónico también) es un truco muy simple:

add_action( 'woocommerce_before_calculate_totals', 'set_cart_item_sale_price', 20, 1 ); function set_cart_item_sale_price( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return; // Iterate through each cart item foreach( $cart->get_cart() as $cart_item ) { $price = $cart_item['data']->get_sale_price(); // get sale price $cart_item['data']->set_price( $price ); // Set the sale price } } 

El código va en el archivo function.php de su tema hijo activo (tema activo).

Probado y funciona.

Así que el código solo establece el precio de venta del producto como el precio del producto en los artículos del carrito y funciona.