validar tutorial reportar producto plugin personalizar personalizados pago modificar finalizar fields espaƱol custom compra carrito campos atributos agregar advanced javascript php html wordpress woocommerce

javascript - tutorial - Cambiar el precio del producto en el carrito por campo personalizado, Woocommerce



reportar pago woocommerce (1)

Aquí estoy suponiendo que el lorem price se almacena en un meta campo personalizado asociado con meta_key your_custom_meta_field

Use el siguiente código en el archivo function.php su tema

add_action( ''woocommerce_before_calculate_totals'', ''my_custom_calculate_totals'' ); function my_custom_calculate_totals( $cart ) { if ( ! empty( $cart->cart_contents ) ) { $lorem_price = array(); if ( ! empty( $_REQUEST[''cart''] ) ) { // check if any of the checkboxes is checked WC()->session->set( ''my_lorem_price'', $_REQUEST[''cart''] ); // set all checkboxes information in session $lorem_price = $_REQUEST[''cart'']; } if ( empty( $lorem_price ) ) { $lorem_price = WC()->session->get( ''my_lorem_price'' ); // fetch all checkboxes information from session } if ( empty( $lorem_price ) ) { return; // don''t do anything if any of the checkboxes is not checked } foreach ( $cart->cart_contents as $cart_item_key => $cart_item ) { if ( isset( $lorem_price[ $cart_item_key ][''lorem''] ) ) { // Use following line if lorem price is set at variation level $id = ( ! empty( $cart_item[''variation_id''] ) && $cart_item[''variation_id''] > 0 ) ? $cart_item[''variation_id''] : $cart_item[''product_id'']; // Use following line if lorem price is set at product level // $id = $cart_item[''product_id'']; $new_price = get_post_meta( $id, ''your_custom_meta_field'', true ); // fetch price from custom field $cart_item[''data'']->price = $new_price; } } } }

Actualmente estoy en un problema donde tengo que agregar la opción en el carro con la casilla de verificación (para cada artículo en el carro) que cambiará el precio del artículo con uno del atributo personalizado.

Esta es una ilustración de esto (ya he creado un campo personalizado, solo necesito actualizar el precio cuando se hace clic en el botón "Actualizar carro")

Código para mostrar la casilla de verificación para cada elemento (/woocommerce/templates/cart/cart.php):

<td class="product-url"> <?php $html = sprintf( ''<div class="lorem"><input type="checkbox" name="cart[%s][lorem]" value="%s" size="4" class="input-text url text" /> Lorem price</div>'', $cart_item_key, esc_attr( $values[''url''] ) ); echo $html; ?> </td>