У меня есть заказной продукт (коврик), цена которого определяется выбранной пользователем длиной и шириной.
Я могу легко справиться с изменением цены на странице продукта с помощью jQuery.
Но я изо всех сил пытаюсь найти что-то, что примет выбор пользователя, и использую их для расчета пользовательской цены на корзину / оформление заказа.
Я сохраняю введенные пользователем данные в $ cart_item_data, вот так ....
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;
}
Но я не уверен, как изменить цену только при оформлении заказа.
Я попытался следовать некоторым советам в другой теме и использовать:
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;
}
Но это возвращает статическую цену, и я не могу получить доступ к cart_item_data изнутри этой функции.
И я не могу заставить ее отображаться только в корзине / оформлении заказа.
Любой совет?
Спасибо, Джек