Работа с корзиной WooCommerce. Скрипты

Для начала создаем блок с кнопками, где будет находится кнопка "Купить" и так же сразу сделаем разметку всплывающего сообщение о добавлении в корзину.

Пример

<div class="container-003__items-itm-links">
	<a class="container-003__items-itm-links-lnkbuy cart_add<?php echo $product->get_id(); ?>">Купить</a>
	<p id="rec_cart_info<?php echo $product->get_id(); ?>" class="container-003__items-itm-links-cartinfotxt">
		Товар добавлен в корзину
	</p>
	<a class="container-003__items-itm-links-lnkmore" href="<?php echo esc_url(get_the_permalink());?>">Подробнее</a>
</div>

К этой кнопке мы добавляем стиль "cart_add<?php echo $product->get_id(); ?>", а сообщению делаем id - "id="rec_cart_info<?php echo $product->get_id(); ?>""? как показано в примере выше.

Для всплывающего сообщения мы напишем стили.

Стили

.container-003__items-itm-links p.container-003__items-itm-links-cartinfotxt {
	position: absolute;
    bottom: 65px;
    left: 20px;
    margin: 0;
    padding: 2px 7px;
    background-color: #ffffff;
    border-radius: 10px;
    border: 2px solid #a2000d;
    font-family: 'Verdana';
    font-size: 11px;
    color: #000000;
    opacity: 0;
    transition: 1s;}
.cartinfo_opacity {
	opacity: 1!important;
	transition: 1s;}

После этого в файл function.php добавим Ajax запрос отвечающий за добавление в корзину.

Код

//Adjax запросы//
add_action( 'wp_ajax_call', 'add_cart' );
add_action( 'wp_ajax_nopriv_call', 'add_cart' );
function add_cart() {
	global $woocommerce;
	$productID = ($_POST["idtovar"]);
	$counttovar = ($_POST["counttovar"]);
	$woocommerce->cart->add_to_cart($productID, $counttovar);
	echo 'Добавлен товар';
	wp_die();
}

Далее пишем скрипт и помещаем его в каждую карточку где есть кнопка "Купить", т.е. скрипт будет у каждой карточки товара формироваться свой.

Скрипт

<script>    
	$('.cart_add<?php echo $product->get_id(); ?>').click(function() {
	var $idtovar = <?php echo $product->get_id(); ?>;
	var $counttovar = 1;
	console.log ($idtovar);
	console.log ($counttovar);

	var data = {
	action: 'call',
	idtovar: $idtovar,
	counttovar: $counttovar
	};
	jQuery.post('/wp-admin/admin-ajax.php', data);	
	
	$("#cartblock").load("'' #cartblock");
	$("#cartblock").load("'' #cartblock");
	//console.log ("Товар добавлен в корзину");
	$('#rec_cart_info<?php echo $product->get_id(); ?>').addClass('cartinfo_opacity');
	setTimeout(function(){
	$('#rec_cart_info<?php echo $product->get_id(); ?>').removeClass('cartinfo_opacity');
	}, 3000);
	});
</script>

Не забыв при этом на верху шаблона, где находятся карточки добавить строчку подключения JQuery.

Вот такую

<script src="/wp-content/themes/mielemos/assets/js/jquery-3.7.1.min.js"></script>

Теперь, что бы наша корзина меняла свой вид когда в ней есть хоть один товар, пропишем немного условий для этого.

Код

<a id="cartblock" class="container-header2__right-link" href="/cart/">
	
	<?php
	global $woocommerce;
	$cart_contents_count = WC()->cart->get_cart_contents_count();
	$cart_total_count = WC()->cart->get_cart_subtotal();
	//echo $cart_contents_count;
	//echo $cart_total_count;
	?>
	
	<?php 
	if ($cart_contents_count == 0) {
	?>
	<img class="container-header2__right-link-img" src="/wp-content/themes/mielemos/assets/images/menuicon005.png" alt="">
	<?php 
	}
	else
	{ 
	?>
	<img class="container-header2__right-link-img" src="/wp-content/themes/mielemos/assets/images/menuicon005full.png" alt="">
	<?php
	}
	?>
	
</a>

А если нам нужно еще указывать количество и цену товаров в корзине то тогда такой код.

Код

<a id="cartblock" class="container-header2__rightblock-link" href="/ruswool-new_wp/cart">
	
	<?php
	global $woocommerce;
	$cart_contents_count = WC()->cart->get_cart_contents_count();
	$cart_total_count = WC()->cart->get_cart_subtotal();
	//echo $cart_contents_count;
	//echo $cart_total_count;
	?>
	
	<?php 
	if ($cart_contents_count == 0) {
	?>
	<i class="fa-solid fa-cart-shopping"></i>
	<p class="container-header2__rightblock-link-txt">0 товар(ов)<br>0.00 р.</p>
	<?php 
	}
	else
	{ 
	?>
	<i class="fa-solid fa-cart-shopping"></i>
	<p class="container-header2__rightblock-link-txt"><?echo $cart_contents_count?> товар(ов)<br><?echo $cart_total_count?> р.</p>
	<?php
	}
	?>
</a>

 

Так же с моим портфолио можно ознакомиться на любой из представленной социальной сети, на своих страницах я публикую посты о своих работах, заданиях и целях.

Для связи со мной можно воспользоваться любой социальной сетью,
или написать на почту:

С моим резюме можно ознакомиться по ссылке:

© 2020-2024 Портфолио Юдина Александра г.Пенза. Все права защищены