Я использую следующий код для определения цены c для продуктов WooCommerce:
function add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
if( ! empty( $_POST['custom-total-price'] ) ) {
$product = wc_get_product( $product_id );
$price = $product->get_price();
$cart_item_data['custom_price'] = $_POST['custom-total-price'];
}
return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3 );
function before_calculate_totals( $cart_obj ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
foreach( $cart_obj->get_cart() as $key=>$value ) {
if( isset( $value['custom_price'] ) ) {
$price = $value['custom_price'];
$value['data']->set_price( ( $price ) );
}
}
}
add_action( 'woocommerce_before_calculate_totals', 'before_calculate_totals', 10, 1 );
Цена рассчитывается с помощью jQuery на передней панели и отправляется через форму ввода, когда продукт добавлен в корзину.
Это работает в том смысле, что общая сумма корзины обновляется, и пользовательская цена для отдельных товаров отображается на странице корзины. Тем не менее, он по-прежнему показывает цену 0 в мини-корзину. Любая идея, как я могу показать заказную цену в мини-корзине?