Establecer el precio del artículo del carrito desde un precio personalizado de campo de entrada oculto en Woocommerce 3

En Woocommerce, uséjQuery para calcular un precio personalizado en las páginas de un solo producto, y ahora necesita pasar este valor al carrito.

El comportamiento deseado es pasar el nuevo precio recuperado del campo oculto al precio del artículo del carrito.

Aquí está mi código real:

// Hidden input field in single product page
add_action( 'woocommerce_before_add_to_cart_button', 'custom_hidden_product_field', 11, 0 );
function custom_hidden_product_field() {
    echo '<input type="hidden" id="hidden_field" name="custom_price" class="custom_price" value="">';
}


// The code to pass this data to the cart:
add_action( 'woocommerce_add_cart_item_data', 'save_custom_fields_data_to_cart', 10, 2 );
function save_custom_fields_data_to_cart( $cart_item_data, $product_id ) {

    if( ! empty( $_REQUEST['custom_price'] ) ) {
        // Set the custom data in the cart item
        $cart_item_data['custom_data']['custom_price'] = $_REQUEST['custom_price'];
        $data = array( 'custom_price' => $_REQUEST['custom_price'] );

        // below statement make sure every add to cart action as unique line item
        $cart_item_data['custom_data']['unique_key'] = md5( microtime().rand() );
        WC()->session->set( 'custom_data', $data );
    }
    return $cart_item_data;
}

Y verifique ambos$data y$cart_item_data para ver que ambos devuelven elcustom_price datos que se calculan en la página.

in embargo, voy a ver el carrito y el valor de la línea de pedido sigue siendo 0.

Establezco unavar igual a laWC()->session->set( 'custom_data', $data ); y entoncesvar_dump para comprobarlo, pero esto devuelveNULL que podría ser lo que devuelve, no estoy completamente seguro porque nunca lo he usado.

También debería agregar que tengo laregular_price en el backend del producto establecido en 0. Cuando borro esto (y lo dejo en blanco) obtengo el error:

Advertencia: Un valor no numérico encontrado en C: \ xampp \ htdocs \ my-transfer-source \ wp-content \ plugins \ woocommerce \ incluye \ class-wc-discount.php en la línea 85

Me pregunto si me he perdido algo aquí, y si alguien podría dar algo de luz sobre esto. Gracia

Respuestas a la pregunta(1)

Su respuesta a la pregunta