strip_tags remove ent_quotes ejemplo php wordpress woocommerce cart booking

php - remove - Depósito basado en un porcentaje del importe total del carrito



strip_tags() (1)

Su código realmente no va a hacer lo que espera, ya que está agregando una tarifa de o.2 al monto total del carrito. Entonces, si el monto del carrito es 100 , el total general será 100.2 ...

Lo que quiere hacer, en su lugar, es eliminar el 80% del monto total del carrito para obtener un monto del carrito del 20%. Esto es posible usando una tarifa negativa del 80% del monto total del carrito. Si no necesita establecer ID de productos específicos como en su código original, use la segunda función a continuación.

Esta es la primera función que eliminará el 80% del importe total del carrito cuando un artículo del carrito coincida con los ID de productos específicos establecidos en la función:

add_action( ''woocommerce_cart_calculate_fees'', ''booking_deposit_calculation'' ); function booking_deposit_calculation( $cart_object ) { if ( is_admin() && ! defined( ''DOING_AJAX'' ) ) return; ## Set HERE your targeted products IDs $target_product_ids = array( 2434 ); ## Set HERE your negative percentage (to remove an amount from cart total) $percent = -.80; // 80% off (negative) $matching = false; // Iterating through each cart items foreach ( $cart_object->get_cart() as $item_values ) { if( in_array( $item_values[''product_id''], $target_product_ids ) ) { // If a cart item match with a targeted product ID // Get cart subtotal excluding taxes $cart_subtotal = $cart_object->subtotal_ex_tax; // or for subtotal including taxes use instead: // $cart_subtotal = $cart_object->subtotal; ## ## CALCULATION ## ## $calculated_amount = $cart_subtotal * $percent; // Adding a negative fee to cart amount (Including taxes) $cart_object->add_fee( __(''Deposit calculation'', ''woocommerce''), $calculated_amount, true ); break; // We stop the loop } } }

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

Pero puede ser que no necesite tener algunos productos específicos como en el código original.

Si es el caso, simplifique el código:

add_action( ''woocommerce_cart_calculate_fees'', ''booking_deposit_calculation'' ); function booking_deposit_calculation( $cart_object ) { if ( is_admin() && ! defined( ''DOING_AJAX'' ) ) return; ## Set HERE your negative percentage (to remove an amount from cart total) $percent = -.80; // 80% off (negative) // Get cart subtotal excluding taxes $cart_subtotal = $cart_object->subtotal_ex_tax; // or for subtotal including taxes use instead: // $cart_subtotal = $cart_object->subtotal; ## ## CALCULATION ## ## $calculated_amount = $cart_subtotal * $percent; // Adding a negative fee to cart amount (Including taxes) $cart_object->add_fee( __(''Deposit calculation'', ''woocommerce''), $calculated_amount, true ); }

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

Ambas funciones son probadas y funcionan

Tomé este código de otra publicación y básicamente, según entiendo, este código intenta forzar el precio del carrito para que cambie a un monto fijo de $ 40 y lo cargue como una tarifa de reserva.

Lo que quiero hacer es forzar que el monto del carrito sea el 20% del total basado en la suma de todos los productos del carro. Mi sitio es para reservas , por lo que solo quiero cobrar un depósito y luego hacer que paguen cuando utilizan su reserva.

Aquí está el código de esta publicación: depósito de carrito de Woocommerce

add_action( ''woocommerce_cart_calculate_fees'', ''booking_fee'' ); function booking_fee() { global $woocommerce; if ( is_admin() && ! defined( ''DOING_AJAX'' ) ) return; $bookingfee_array = array( ''2434'' ); $fixed = 40.00; foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { if( in_array( $values[''product_id''], $bookingfee_array ) ) { $surcharge = $fixed; $woocommerce->cart->add_fee( ''Broneeringutasu'', $surcharge, true, '''' ); } } }

Y aquí es cómo lo cambiaría:

add_action( ''woocommerce_cart_calculate_fees'', ''booking_fee'' ); function booking_fee() { global $woocommerce; if ( is_admin() && ! defined( ''DOING_AJAX'' ) ) return; $bookingfee_array = array( ''2434'' ); $percent = .20; foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { if( in_array( $values[''product_id''], $bookingfee_array ) ) { $surcharge = $percent; $woocommerce->cart->add_fee( ''Booking Fee'', $surcharge, true, '''' ); } } }

Pero esto no está funcionando como se esperaba.

¿Alguna ayuda en esto?

Gracias