En un sitio que vende pisos de madera por caja, necesitaría agregar una opción para agregar un % de material adicional que se recomienda, aumentando el valor de la cantidad.
Lo que he intentado hasta ahora es este fragmento que agrega un valor específico a la etiqueta de cantidad y funciona:
<a id="quantityincrease" class="button" href="#">Add recommended waste</a> <script> jQuery( function($) { $('#quantityincrease').click( function(e) { e.preventDefault(); $('[name="quantity"]').val('150'); console.log('#quantityincrease was clicked'); }); }); </script>Lo que necesito es ese botón para aumentar el valor en la etiqueta cantidad/área_necesaria en un porcentaje específico. Gracias de antemano a cualquiera que intente ayudar.
Por lo que he entendido, no solo necesita javascript, sino también agregar la etiqueta en la página del producto y llevarla a los datos del carrito y al pedido. El código puede ser el siguiente:
add_action( 'woocommerce_before_add_to_cart_button', 'add_fields_before_add_to_cart' ); function add_fields_before_add_to_cart( ) { echo '<div class="area-selection-management">'; echo '<label for="area_needed_input" id="area-needed-label">-</label>'; echo '<input type="hidden" name="area_needed_input" id="area-needed-input" value="0">'; echo '</div>'; ?> <script> jQuery(document).ready(function($) { $('[name="quantity"]').on('change', function(e) { var current_area = $('#area-needed-input').val(); var increase = 9 // Do your mathematical calculations hereto increase the value accordingly. $('#area-needed-input').val(increase); $('#area-needed-label').text(increase + 'sq m'); }); </script> }Después de agregar al carrito, deberá agregarlo al meta del carrito, lo que se puede hacer como se menciona a continuación:
add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_data', 25, 2 ); function add_cart_item_data( $cart_item_data, $product_id ) { if( isset( $_POST['area_needed_input'] ) ) $cart_item_data['area_needed_input'] = sanitize_tex_field( $_POST['area_needed_input'] ); return $cart_item_data; }Luego, deberá agregar el meta del carrito al pedido.
add_action( 'woocommerce_add_order_item_meta', 'add_order_item_meta' , 10, 3 ); function add_order_item_meta ( $item_id, $cart_item, $cart_item_key ) { if ( isset( $cart_item[ 'area_needed_input' ] ) ) { wc_add_order_item_meta( $item_id, __( "Area Needed", "woocommerce"), sanitize_text_field( $cart_item[ 'area_needed_input' ] ) ); }