Казалось бы, логика WooCommerce прозрачная и четкая: добавление товаров на странице товара, удаление товаров на странице корзины (Cart), а страница оформления заказа нужна для ввода данных покупателей. Однако такая логика устраивает не всех.

На одном из сайтов клиентов была внедрена упрощенная схема создания заказа, при которой покупатель после нажатия кнопки «Купить» сразу перенаправляется на страницу оформления заказа. Как вы понимаете, страница «Корзина» в этой схеме не участвует и вообще скрыта.

Проблема в том, что некоторые покупатели могут добавить в корзину несколько товаров (и по несколько раз) и потом, перейдя на страницу оформления заказа (Checkout), уже не имеют возможности изменить свой заказ, а потому отказываются от покупки.

Понятно, что лучшее решение — вернуть на сайт корзину. Но есть и компромиссный вариант: добавить кнопки удаления товаров на страницу оформления заказа. Для этого скопируйте и вставьте такой код в файл functions.php активной темы сайта:

/* Speedplus.com.ua ## Allows to remove products in checkout page */
function speedplus_checkout_remove_product( $product_name, $cart_item, $cart_item_key ) {
	if ( is_checkout() ) {
		$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
		$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
		$remove_link = apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
			'<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>',
			esc_url( WC()->cart->get_remove_url( $cart_item_key ) ),
			__( 'Remove this item', 'woocommerce' ),
			esc_attr( $product_id ),
			esc_attr( $_product->get_sku() )
        ), $cart_item_key );
		return '<span>' . $remove_link . '</span> <span>' . $product_name . '</span>';
	}
	return $product_name;
}
add_filter( 'woocommerce_cart_item_name', 'speedplus_checkout_remove_product', 10, 3 );

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *