# WishlistButton ক্লাস

**নেমস্পেস:** `Bizzwishlist\Frontend`  
**ফাইল:** `includes/Frontend/WishlistButton.php`

## বর্ণনা

`WishlistButton` ক্লাস প্রোডাক্ট পেজ এবং শপ লুপে "Add to Wishlist" বাটন রেন্ডার করে।

## প্রপার্টি সমূহ

| প্রপার্টি | ধরন | বর্ণনা |
|-----------|------|--------|
| `$repository` | `WishlistRepository` | ডাটাবেস রিপোজিটরি |
| `$session` | `Session` | সেশন হেল্পার |

## মেথড সমূহ

### `render()`
- **হুক:** `woocommerce_after_add_to_cart_button`
- **রিটার্ন:** `void`
- সিঙ্গেল প্রোডাক্ট পেজে উইশলিস্ট বাটন রেন্ডার করে।
- বাটনে `data-product-id` এবং `data-variation-id` অ্যাট্রিবিউট থাকে।
- ভেরিয়েবল প্রোডাক্টে WooCommerce এর `found_variation` ইভেন্টের মাধ্যমে `data-variation-id` আপডেট হয়।
- প্রোডাক্ট ইতিমধ্যে উইশলিস্টে থাকলে ভরা হার্ট (&#9829;) এবং "In Wishlist" দেখায়।

### `render_loop_button( string $html, WC_Product $product )`
- **হুক:** `woocommerce_loop_add_to_cart_link` (ফিল্টার)
- **রিটার্ন:** `string`
- শপ/ক্যাটাগরি পেজে প্রতিটি প্রোডাক্টের পাশে ছোট হার্ট বাটন যোগ করে।
- শুধু আইকন দেখায়, টেক্সট লুকানো থাকে।
- `data-variation-id="0"` থাকে কারণ শপ লুপে ভেরিয়েশন ড্রপডাউন দিয়ে JS থেকে আপডেট হতে পারে।

### `is_in_wishlist( int $product_id )` (প্রাইভেট)
- **রিটার্ন:** `bool`
- প্রোডাক্ট বর্তমান ইউজারের উইশলিস্টে আছে কি না চেক করে।

## ভেরিয়েশন সাপোর্ট

সিঙ্গেল প্রোডাক্ট পেজে ভেরিয়েবল প্রোডাক্টের জন্য:
1. বাটনে প্রথমে `data-variation-id="0"` থাকে
2. ইউজার ভেরিয়েশন সিলেক্ট করলে WooCommerce `found_variation` ইভেন্ট ফায়ার হয়
3. JavaScript সেই ইভেন্ট ক্যাচ করে বাটনের `data-variation-id` আপডেট করে
4. বাটনে ক্লিক করলে ভেরিয়েশন সহ উইশলিস্টে যোগ হয়
