# WishlistPage ক্লাস

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

## বর্ণনা

`WishlistPage` ক্লাস `[bizzwishlist]` শর্টকোড এবং উইশলিস্ট পেজ রেন্ডার করার দায়িত্ব পালন করে। এটি নিজের উইশলিস্ট এবং শেয়ার্ড উইশলিস্ট উভয়ই দেখাতে পারে।

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

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

## মেথড সমূহ

### `render_shortcode( array $atts )`
- **শর্টকোড:** `[bizzwishlist]`
- **রিটার্ন:** `string`
- URL এ `bizzwishlist_share` প্যারামিটার থাকলে শেয়ার্ড উইশলিস্ট দেখায়।
- নিজের উইশলিস্ট দেখায় এবং শেয়ার URL তৈরি করে।
- টেম্পলেটে `products` অ্যারে পাঠায় যেখানে প্রতিটি আইটেমে `product` (WC_Product) এবং `variation_id` থাকে।

### `render_shared_wishlist( string $share_key )` (প্রাইভেট)
- **রিটার্ন:** `string`
- শেয়ার কী দিয়ে অন্য ইউজারের উইশলিস্ট দেখায়।
- প্রথমে ইউজার আইডি হিসেবে চেক করে, তারপর সেশন কী হিসেবে।
- শেয়ার কী ফরম্যাট যাচাই করে (নিউমেরিক বা UUID)।

### `get_share_url( array $owner )` (প্রাইভেট)
- **রিটার্ন:** `string`
- ইউজারের ইউনিক শেয়ারেবল URL তৈরি করে।
- লগইন ইউজারের জন্য ইউজার আইডি, গেস্টের জন্য সেশন কী ব্যবহার করে।

## টেম্পলেট

টেম্পলেট ফাইল: `templates/wishlist-page.php`

থিম থেকে ওভাররাইড করতে: `yourtheme/bizzwishlist/wishlist-page.php`

### টেম্পলেট ভেরিয়েবল

| ভেরিয়েবল | ধরন | বর্ণনা |
|----------|------|--------|
| `$products` | `array` | আইটেম অ্যারে, প্রতিটিতে `product` ও `variation_id` |
| `$share_url` | `string` | শেয়ারেবল URL |
| `$is_shared` | `bool` | শেয়ার্ড ভিউ কি না |

### ভেরিয়েশন সিলেক্টর

উইশলিস্ট পেজে ভেরিয়েবল প্রোডাক্টে ভেরিয়েশন না থাকলে (variation_id = 0):
- প্রতিটি অ্যাট্রিবিউটের জন্য ড্রপডাউন দেখায়
- ড্রপডাউন পরিবর্তন করলে JavaScript ম্যাচিং ভেরিয়েশন বের করে
- ম্যাচ পাওয়া গেলে "Add to Cart" বাটন সক্রিয় হয়
