Как в woocommerce добавить товар в корзину со своей ценой?
Скажите как можно добавить произвольный товар в корзину, при этом поставить свою цену на продукт а не ту что прописана у товара. Я на своем сайте вордпресс с плагином woocommerce хочу создать свою специальную кнопку с формой для заказа определенного товара по определенной цене. Форму я создал, в ней есть скрытые поля цены и id продукта, осталось при обновлении страницы добавить товар в корзину со своей ценой.
Ниже приведу пример кода который добавит товар в корзину и при переходе в корзину или чекаут будет новая, ваша цена.
function add_product_to_cart() { global $woocommerce; if (empty($_POST['price'])) { return false; } if (empty($_POST['product'])) { return false; } /* Custom Price in cookies for Crowdfunding start */ setcookie('add_custom_price' . $_POST['productid'], $_POST['price'], time() + 60 * 60 * 24 * 2, '/'); setcookie('add_custom_id' . $_POST['productid'], $_POST['product'], time() + 60 * 60 * 24 * 2, '/'); /* Custom Cookies end for Crowdfunding end */ $woocommerce->cart->add_to_cart($_POST['product']); } add_action('init', 'add_product_to_cart'); function woocommerce_alter_cart_prices($cart_object) { global $woocommerce; $cart_object = $woocommerce->cart; foreach ($cart_object->cart_contents as $key => $value) { if (isset($_COOKIE['add_custom_id' . $value['product_id']])) { if ($value['product_id'] == $_COOKIE['add_custom_id' . $value['product_id']]) { $value['data']->price = $_COOKIE['add_custom_price' . $value['product_id']]; } } } } add_action('woocommerce_before_calculate_totals', 'woocommerce_alter_cart_prices');
Из формы должны передаваться name=»product» — id продукта и name=»price» — цена продукта(ваша). Функция add_product_to_cart() — добавляет товар в корзину и записывает цену для товара в Cookies . В примере я считаю что корзина пуста и мы добавляем 1 товар, если товаров несколько, код будет чуть другой, посмотреть его можно тут: Как в woocommerce добавить товар в корзину с помощью кода?
Функция woocommerce_alter_cart_prices() — при калькуляции товара, берет для продукта цену из кукис

Никак не могу понять, почему этот код добавляет в корзину 2 раза, когда корзина пуста? =(
if (is_user_logged_in() == false) { function add_product_to_cart() { global $woocommerce; //var_dump($_POST); $id = $_POST['add-to-cart']; $metapolya = get_post_meta( $id ); $roznicaprice = $metapolya['_regular_price'][0]; //$optprice = $metapolya['_sale_price'][0]; //echo $regularprice; if (empty($roznicaprice)) { return false; } if (empty($id)) { return false; } /* Custom Price in cookies for Crowdfunding start */ setcookie('add_custom_price' . $id, $roznicaprice, time() + 60 * 60 * 24 * 2, '/'); setcookie('add_custom_id' . $id, $id , time() + 60 * 60 * 24 * 2, '/'); /* Custom Cookies end for Crowdfunding end */ $woocommerce->cart->add_to_cart($id); } add_action('init', 'add_product_to_cart'); function woocommerce_alter_cart_prices($cart_object) { global $woocommerce; $cart_object = $woocommerce->cart; foreach ($cart_object->cart_contents as $key => $value) { if (isset($_COOKIE['add_custom_id' . $value['product_id']])) { if ($value['product_id'] == $_COOKIE['add_custom_id' . $value['product_id']]) { $value['data']->price = $_COOKIE['add_custom_price' . $value['product_id']]; } } } } add_action('woocommerce_before_calculate_totals', 'woocommerce_alter_cart_prices'); }//end if

отбой, разобрался
А в чём была проблема? У меня тупо добавляется 2 товара с базовой не измененной стоиомстью.