I have a custom product (a rug) that's price is determined by the user's chosen length and width.
I can handle the changing of price easily on the product page using jQuery.
But I'm struggling to find something that will take the user's choices, and use them to calculate a custom price on cart/checkout.
I'm saving the user's inputted data into $cart_item_data like so...
function smcrp_add_custom_rug_fields_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
$length_text = filter_input( INPUT_POST, 'smcrp-length' );
$width_text = filter_input( INPUT_POST, 'smcrp-width' );
$unit_text = filter_input( INPUT_POST, 'smcrp-unit' );
if ( empty( $length_text ) && empty( $width_text ) && empty( $unit_text ) ) {
return $cart_item_data;
}
$cart_item_data['smcrp-length'] = $length_text;
$cart_item_data['smcrp-width'] = $width_text;
$cart_item_data['smcrp-unit'] = $unit_text;
return $cart_item_data;
}
But I'm not sure how to change the price only on checkout.
I tried following some advice on another thread and use:
function smcrp_custom_rug_price( $price, $product ) {
wc_delete_product_transients($product->get_id());
if ( strpos( $product->get_data()["name"], "- Custom" ) === FALSE )
return $price;
return 180;
}
But this returns the static price, and I can't seem to access the cart_item_data from inside this function.
And I can't get it to only display on cart/checkout.
Any advice?
Thanks, Jack