Как в 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.
    Добавить Комментарий

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

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

    Ваш ответ

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