Con woocommerce, en mi sitio web me gustaría agregar en la página del carrito una entrada de selección donde el usuario puede seleccionar un valor entre dos opciones y, dependiendo de este valor, cambiaré el precio.
hasta ahora, pude obtener el total y cambiarlo usando esto:
function action_woocommerce_before_cart_totals( ) { global $woocommerce; $woocommerce->cart->total = $woocommerce->cart->total*0.25; var_dump( $woocommerce->cart->total);};El problema es que cuando voy a la página de pago no toma el total calculado en functions.php
Gracias por ayudarme.
También puede usar el gancho woocommerce_review_order_before_order_total al mismo tiempo, para mostrar su precio personalizado en el pago, de esta manera:
add_action( 'woocommerce_review_order_before_order_total', 'custom_cart_total' ); add_action( 'woocommerce_before_cart_totals', 'custom_cart_total' ); function custom_cart_total() { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; WC()->cart->total *= 0.25; //var_dump( WC()->cart->total); }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.
La pasarela de pago siempre usa la variable $order->get_total() para obtener el total general del carrito. Entonces, para modificar, use este filtro woocommerce_order_amount_total para su función si sigue los pasos a continuación. Su pasarela de pago siempre muestra el total que modificó.
add_filter( 'woocommerce_order_amount_total', 'custom_cart_total' ); function custom_cart_total($order_total) { return $order_total *= 0.25; }