abezgauz
@abezgauz
web-кузнец

Раздельная оплата товаров или очередной «купить в один клик» — как?

Здравствуйте, товарищи!

Недавно тут в разделе вукомерса видел довольно интересный вопрос. На моменте оформления заказа чувак хотел исключить определённые товары из финишного ценника, если в корзине на тот момент есть другой определённый товар.

Ну это ещё +- понятно. Но я пошёл дальше.

Думается мне, что вопрос был удалён, т.к. юзер понял, что в этом случае все прочие товары "будут куплены" бесплатно. А это явно не то, что ему нужно. Я даже уверен в том, что чувак очередной плагин "покупки в один клик" лепит.

Никогда не задумывался о работе этих плагинов для вукомерса. И я застрял.

Вопрос: как раздельно покупать товары в вукомерс? Мне плагины не нужны, "готовые коды" тоже не нужны. Я хочу понять логику и попробовать это воплотить в жизнь.

Лениво искал варианты. В рус сегменте, в англ... Всё крутится рядом, но на вопрос не отвечает.

Как решил: js+чуть-чуть php. Алгоритм:
0. У товаров из категории со слагом "test" есть кнопка "типа купи в один клик" (стандартная кнопка добавления товара в корзину). Жмём.
1. При нажатии на эту кнопку товар из категории "test" падает в корзину + из корзины удаляются все товары, что не входят в категорию со слагом "test" + внимание: эти удалённые товары падают в localstorage (можно улучшить, чтобы иметь синхронизацию между разными обозревателями/устройствами, если это делается будучи в своем аккаунте, а не гостем).
2. Открывается окно, где подтянута форма оформления. Окно притворяется неубиваемым и никуда не денется пока что-то с ним не сделают или не закончат оформление.
3. Если нажат "крестик для закрытия окна" окно сгинет + из корзины удалится товар из категории "test" + упадёт в корзину всё из локального хранилища (отсюда подсмотрел https://wordpress.stackexchange.com/questions/8696...)

Костыли рулят. Мне особенно "нравится" аж три роковых функции на крестике закрытия. Бррр.
В общем, это не то, что можно назвать норм вариантом, имхо. Всё завязано на окне, которое в свою очередь глушилка какая-то...

Повторяю вопрос, если успелось забыться: можно разделить оформление товаров из корзины? Оформлять отдельно в зависимости от типа товара мб? Если у кого-то есть норм алгоритм создания плагина "покупки в один клик" - тоже очень интересно!

p.s.
Пометка вопроса "Средний", т.к. думаю, что для опытных разрабов под вукомерс это +- понятная задача, а не "Сложная".
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Проще
Для заказа в один клик Вам корзина вообще не нужна.
- Отправляете AJAX-ом данные о товаре
- Создаете заказ, наполняете , оформляете
Как пример
$qorder = wc_create_order();

	if ( 0 === $params['type'] ) { /* simple */
		$product    = wc_get_product( $params['id'] );
		$item_id    = $qorder->add_product( $product, $params['qty'] );
	} elseif ( 1 === $params['type'] ) { /* variable */
		$variations_array = array();

		$var_product                   = new WC_Product_Variation( $params['var_id'] );
		$variations_array['variation'] = array(
			$params['attr_name'] => $params['attr_value'],
		);

		$item_id    = $qorder->add_product( $var_product, $params['qty'], $variations_array );
	}

	$qorder->set_address( $address, 'billing' );
	$qorder->set_address( $address, 'shipping' );

	$qorder->calculate_totals();
	wc_reduce_stock_levels( $qorder->get_id() );
	$qorder->update_status( 'processing' );
	echo 'Спасибо за заказ';
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы