Я настроил пользовательский калькулятор в WooCommerce как новый плагин.
Из этого калькулятора я передаю свою общую цену и общее количество.Цена рассчитывается путем взятия общего квадратного дюйма продукта (это кусок ткани) и умножения его на общее количество заказанных деталей.
Но мы оцениваем стоимость доставки на основе общего веса, иустановили это, чтобы быть 0,003 / кв. дюйм.Итак, чтобы правильно рассчитать доставку, мне нужно будет передать эту информацию в корзину.Чтобы было ясно, мне нужно будет передать полные квадратные дюймы ткани в корзину, где она будет затем оценивать ее на основе этого.
У меня есть количество и цена, которые нужно добавить в корзинуиспользуя скрытое поле значения и следующий код:
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'] && $_REQUEST['custom_quantity'] ) ) {
// Set the custom data in the cart item
if($_REQUEST['custom_price'] < 25) {
$cart_item_data['custom_price'] = 25.00;
} else {
$cart_item_data['custom_price'] = $_REQUEST['custom_price'];
}
// Set the custom data in the cart item
$cart_item_data['custom_quantity'] = $_REQUEST['custom_quantity'];
// Make each item as a unique separated cart item
$cart_item_data['unique_key'] = md5( microtime().rand() );
}
return $cart_item_data;
}
Но у меня возникают проблемы со следующим кодом:
add_action( 'woocommerce_before_calculate_totals', 'change_cart_item_price', 30, 1 );
function change_cart_item_price( $cart ) {
if ( ( is_admin() && ! defined( 'DOING_AJAX' ) ) )
return;
// Loop through cart items
foreach ( $cart->get_cart() as $cart_item ) {
// Set the new price
if( isset($cart_item['custom_price']) ){
$cart_item['data']->set_price($cart_item['custom_price']);
}
//set the new quantity
if( isset($cart_item['custom_quantity']) ) {
$cart_item['data']->set_quantity($cart_item['custom_quantity']);
}
}
}
Цена прошла очень хорошо, однако, когда код достигнижняя часть:
if( isset($cart_item['custom_quantity']) ) {
$cart_item['data']->set_quantity($cart_item['custom_quantity']);
}
Сбой и сбой сайта.В частности, строка
$cart_item['data']->set_quantity($cart_item['custom_quantity']);
Я знаю это, потому что я быстро набрал echo "good"
на своем месте, и она прошла нормально.
Я неправильно использую set_quantity
?