ইকমার্স দোকানে:
হোমপেজে প্রদর্শিত আইটেম রয়েছে এবং প্রতিটি আইটেমের নীচে একটি "কার্টে যুক্ত করুন" বোতাম রয়েছে। এই বোতামটি ক্লিক করা হলে আইটেমটি কার্টে যুক্ত করা হয়। যদি এই বোতামটি আবার ক্লিক করা হয়, তবে ইতিমধ্যে কার্টে বিদ্যমান আইটেমটির পরিমাণ 1 দ্বারা বৃদ্ধি পেয়েছে I আমি বিশ্বাস করি এটি লুপ । এ পর্যন্ত সব ঠিকই.
একক পণ্য পৃষ্ঠাতে একটি "কার্টে যুক্ত করুন" বোতাম রয়েছে। এই বোতামটি ক্লিক করা হলে আইটেমটি কার্টে যুক্ত হয়। একটি পরিমাণ ইনপুট পাঠ্যবক্সও রয়েছে যা পরিমাণ পরিবর্তন করতে ব্যবহার করা যেতে পারে। এটাও ঠিক আছে।
সমস্যাটি:
আমাকে "কার্টে যুক্ত করুন" বোতামের মধ্যে পার্থক্য করতে হবে যা লুপের মধ্যে ক্লিক করা হয়েছিল (বর্তমানে হোমপেজে, তবে অন্যান্য পৃষ্ঠায় যেমন আর্কাইভ পৃষ্ঠা ইত্যাদিতেও ব্যবহার করা যেতে পারে) ক্লিক করা "কার্টে যুক্ত করুন" বোতামটি বনাম একক পণ্য পৃষ্ঠাতে। এই পার্থক্যের ভিত্তিতে, আমার যা করা দরকার তা এখানে:
- যদি "যোগ করুন কার্ট থেকে" লুপ মধ্যে প্রকাশমান বোতাম ক্লিক করা হয়েছিল, দখল পরিমাণ এই যে আইটেমের ইতিমধ্যে কার্ট বিদ্যমান ব্যবহারের
$cart_item_key
, 1 দ্বারা এটি বাড়ায় এবং যে অতিরিক্ত প্রক্রিয়াকরণ কি করতে হবে একটি কাস্টম ফাংশন এবং বিবরণ সংরক্ষণ করুন এই পাঠাতে আবার কার্টে - যদি একক পণ্য পৃষ্ঠাতে উপস্থিত "কার্টে যুক্ত করুন" বোতামটি ক্লিক করা হয়, তবে কার্টটিতে ইতিমধ্যে বিদ্যমান এই আইটেমটির পরিমাণটি ধরুন,
$cart_item_key
এটি 3 দ্বারা গুণ করুন এবং এটি একটি কাস্টম ফাংশনে প্রেরণ করুন যা অতিরিক্ত প্রক্রিয়াকরণ করবে এবং সংরক্ষণ করবে আবার কার্টে বিশদ। - উপরের দুটি ক্ষেত্রেই, বিভিন্ন লজিকের উপর ভিত্তি করে পরিমাণ পরিবর্তন করা হচ্ছে এবং এই পরিমাণটি একটি কাস্টম ফাংশন কলে প্রেরণ করা দরকার।
আমি যা চেষ্টা করেছি:
আমি নিম্নলিখিত কোড চেষ্টা করেছিলাম:
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();
}
উপরের কোডটি সহ সমস্যাটি হ'ল এটি যদি আমার কাছে if... else if...
যুক্তি না থাকে তবে "কার্টে অ্যাড করুন" বোতামটি কোথায় অবস্থিত তা বিবেচনা না করেই কোডটি কার্যকর করা হয়। অন্য কথায়, আমি লুপ (হোমপেজ, সংরক্ষণাগার পৃষ্ঠা বা লুপ ব্যবহার করে এমন কোনও পৃষ্ঠা) অবস্থিত "কার্টে যুক্ত করুন" বোতামটি ক্লিক করি বা আমি একক পণ্য পৃষ্ঠাতে অবস্থিত "কার্টে যুক্ত করুন" বোতামটি ক্লিক করি, উপরের কোডটি if... else if...
যুক্তির অভাবে কার্যকর করা হয় gets
সুতরাং, লুপটিতে থাকা "কার্টে যুক্ত করুন" বোতামটি ক্লিক করা হলে (হোমপেজ, সংরক্ষণাগারগুলি ইত্যাদি নির্বিশেষে) ক্লিক করার পরে এবং "কার্টে যুক্ত করুন" বোতামটি ব্যবহার করার সময় আলাদা কোড চালাতে চাই separate যে একক পণ্য পৃষ্ঠাতে অবস্থিত ক্লিক করা হয়। আমি কীভাবে এটি অর্জন করতে পারি?
এরকম কিছু আশা করা:
- লুপের ভিতরে উপস্থিত বোতামটি ক্লিক করা হলে -> এটি করুন।
- যদি একক পণ্য পৃষ্ঠাতে উপস্থিত বোতামটি ক্লিক করা হয় -> এটি করুন।