E-ticaret mağazasında:
Ana sayfada görüntülenen öğeler var ve her öğenin altında bir "Sepete Ekle" düğmesi var. Bu düğmeye tıklandığında, ürün sepete eklenir. Bu düğmeye tekrar tıklanırsa, halihazırda alışveriş sepetinde bulunan öğenin miktarı 1 artar. Bunun döngü olduğunu düşünüyorum . Çok uzak çok iyi.
Tek Ürün sayfasında bir "Sepete Ekle" düğmesi vardır. Bu düğme tıklandığında, öğe sepete eklenir. Miktarı değiştirmek için kullanılabilecek bir Miktar girişi metin kutusu da vardır. Bu da iyi.
SORUN:
Döngü içinde tıklanan "Sepete Ekle" düğmesi (şu anda Ana Sayfa'da, ancak Arşiv sayfası vb. Gibi diğer sayfalarda da kullanılabilir) ile "Tıklanan Sepete Ekle" düğmesi arasında ayrım yapmam gerekiyor Tek Ürün sayfasında. Bu farklılaşmaya dayanarak, yapmam gereken şey:
- Döngü içinde görünen "Sepete Ekle" düğmesi tıklanmışsa, sepeti kullanarak zaten mevcut olan bu öğenin Miktarını ,
$cart_item_key
1 ile artırın ve bunu ek işlem yapacak ve ayrıntıları kaydedecek özel bir işleve gönderin tekrar sepete. - Tek Ürün sayfasında görünen "Sepete Ekle" düğmesi tıklanmışsa, ürün sepetinde zaten mevcut olan bu öğenin Miktarını
$cart_item_key
3 ile çarpın ve bunu ek işleme ve kaydetme yapacak özel bir işleve gönderin Ayrıntılar tekrar alışveriş sepetine. - Yukarıdaki her iki durumda da, Miktar, farklı mantıklara göre değiştirilir ve bu Miktarın özel bir işlev çağrısına gönderilmesi gerekir.
NELER YAPTIK:
Aşağıdaki kodu denedim:
add_action('woocommerce_add_to_cart', 'custom_action_add_to_cart', 20, 6);
function custom_action_add_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data)
{
$cart = WC()->cart->get_cart();
$product = wc_get_product($product_id);
// NEED TO RUN CUSTOM CODE HERE BASED ON THE CHECKS
if (add to cart within loop is clicked) {
// Get existing $quantity_from_cart from cart using $cart_item_key, but how????
$new_quantity = $quantity_from_cart + 1;
}
else if (add to cart on single product page is clicked) {
// Get existing $quantity_from_cart from cart using $cart_item_key, but how????
$new_quantity = $quantity_from_cart * 3;
}
// Need to send the $new_quantity along with the $cart_item_key to the custom function so that the data can be saved using $cart_item_key
my_custom_function($new_quantity, $cart_item_key);
}
function my_custom_function($new_quantity, $cart_item_key)
{
echo $new_quantity;
WC()->cart->cart_contents[$cart_item_key]['custom_quantity'] = $new_quantity;
WC()->cart->set_session();
}
Yukarıdaki kod ile sorun if... else if...
mantığı yoksa , o zaman kod "sepete ekle" düğmesinin nerede olursa olsun yürütülür olmasıdır. Başka bir deyişle, döngüde bulunan "Sepete Ekle" düğmesini (Ana Sayfa, Arşiv sayfası veya döngüyü kullanan herhangi bir sayfa) tıklasam, yoksa Tek Ürün sayfasında bulunan "Sepete Ekle" düğmesini tıklasam da, yukarıdaki kod if... else if...
mantık yokluğunda yürütülür .
Bu nedenle, döngüde yer alan "Sepete Ekle" düğmesi tıklatıldığında ayrı bir kod çalıştırmak istiyorum (konumu, Ana Sayfa, Arşivler, vb. Olsun bağımsız olarak) ve "Sepete Ekle" düğmesi Tek Ürün sayfasında bulunan tıklanır. Bunu nasıl başarabilirim?
Böyle bir şey bekliyorum:
- Döngünün içinde görünen düğme tıklanırsa -> Bunu yapın.
- Tek Ürün sayfasında görünen düğme tıklanırsa -> Bunu yapın.