Как в 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

в 09.08.2017.

отбой, разобрался

в 09.08.2017.
Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.