Заменить цену в корзине
-
Добрый день!
Знатоки, надеюсь кто-то поможет с кодом.
Есть задача, что у каждого товара есть оптовая цена.
Для этой цели введено дополнительное поле в админке на этапе заполнения товара//Добавление Поля с оптовой ценой function custom_woocommerce_product_options_pricing() { $price_index = '_custom_price'; woocommerce_wp_text_input( array( 'id' => $price_index, 'value' => get_post_meta( get_the_ID(), $price_index, true ), 'data_type' => 'price', 'type' => 'number', 'label' => __( 'Custom price', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')' ) ); } add_action( 'woocommerce_admin_process_product_object', 'custom_woocommerce_admin_process_product_object', 10, 1 ); function custom_woocommerce_admin_process_product_object( $product ) { $price_index = '_custom_price'; $price = wc_clean( wp_unslash( $_POST[ $price_index ] ) ); update_post_meta( $product->get_id(), $price_index, $price ); }
В корзине пока додумался только на эксперимент с определенным товаром (нашел пример). В корзине проверяет по определенному товару на определенное количество, если все ок то цена меняется.
function truemisha_quantity_based_price( $cart_object ) { // вообще всегда можно сделать print_r( $cart_object ); exit; если что-то не ясно $product_id = 93; // целевой ID товара с динамической ценой $value_opt = intval(get_post_meta( get_the_ID(), $price_index, true )); // тут необязательно крутить foreach, но я вот решил сделать так foreach ( $cart_object->get_cart() as $cart_id => $cart_item ) { if( $cart_item[ 'product_id' ] == $product_id ) { $quantity = $cart_item[ 'quantity' ]; break; } } // если количество товара больше трёх, можно задать любое своё значение if( ! empty( $quantity ) && $quantity > 3 ) { // опять цикл, да foreach ( $cart_object->get_cart() as $cart_id => $cart_item ) { // если нужный товар if( $cart_item['product_id'] == $product_id ) { // я решил сделать скидку 50% $newprice = $cart_item['data']->get_regular_price()+100; $cart_item['data']->set_price( $newprice ); } } } }
Изменение на произвольную цену (число или изменение действующей цены) — всё работает.
Но как мне отправить в корзину цену из заполненного поля для оптовой цены?
Пробовал $cart_item[‘data’]->set_price( $newprice ) — выходит ошибка
Пробовал $cart_item[‘data’]->set_price(intval(get_post_meta( get_the_ID(), $price_index, true )) выводит 0Хотя при проверке echo get_post_meta( get_the_ID(), $price_index, true ) на странице товара выводит заданное число
- Тема «Заменить цену в корзине» закрыта для новых ответов.