اولین محصول متغیری که ساختم یک کفش چرم با چهل‌وپنج variation بود. پنج روز بعد از انتشار، ده‌ها ایمیل از مشتری آمد که در صفحه محصول قیمت اشتباه دیده می‌شود. آن روز فهمیدم variable product در ووکامرس یک ویژگی ساده نیست؛ یک زیرسیستم است که اگر منطقش را نفهمی، هر تغییر کوچک به بازسازی کامل تبدیل می‌شود. اگر تازه با ووکامرس شروع کرده‌اید، پیشنهاد می‌کنم اول انواع محصولات در ووکامرس و تفاوت آن‌ها را بخوانید.

محصول متغیر چیست و چه تفاوتی با بقیه انواع دارد؟

در ووکامرس چهار نوع محصول اصلی داریم: Simple با یک قیمت و یک موجودی، Variable که نسخه‌های مختلف از یک کالاست، Grouped که چند محصول ساده را در یک صفحه جمع می‌کند، و External که به یک فروشگاه دیگر لینک می‌دهد. تفاوت بنیادی variable با بقیه، حضور مفهوم variation است. یک variation در واقع یک محصول ساده مستقل است که فقط زیر چتر محصول والد پنهان می‌شود. هر variation می‌تواند SKU (Stock Keeping Unit) جدا، قیمت جدا، تصویر جدا و حتی موجودی جدا داشته باشد. اگر با مفهوم SKU آشنا نیستید، پیشنهاد می‌کنم صفحه SKU در ویکی‌پدیا را ببینید و سپس مقاله جامع مدیریت SKU را در همین سایت بخوانید.

Variable product در ووکامرس یک محصول نیست؛ مجموعه‌ای از محصولات ساده است که فقط در ظاهر با هم یکی به نظر می‌رسند. هر تصمیمی روی والد، روی همه فرزندان اثر می‌گذارد.

Attribute ها را قبل از ساخت، درست بچینید

قبل از هر چیز باید تصمیم بگیرید که variation ها از چه ترکیبی ساخته می‌شوند. این تصمیم در قالب attribute ها ثبت می‌شود. دو نوع attribute داریم: Global که در بخش Products → Attributes ساخته می‌شود و بین محصولات به اشتراک گذاشته می‌شود، و Custom که فقط در همان محصول تعریف می‌شود. تجربه‌ام می‌گوید برای فروشگاه‌های جدی، همیشه Global انتخاب کنید. فرض کنید یک فروشگاه پوشاک دارید و attribute سایز را global می‌سازید. روزی که یک دسته جدید اضافه می‌کنید، همان سایزها با یک تیک در محصول جدید حاضرند.

ترتیب attribute ها مهم است. آن‌ها به همان ترتیبی در dropdown صفحه محصول ظاهر می‌شوند که در تب Attributes تعریف شده‌اند. اگر منطق انتخابی مشتری از رنگ شروع می‌شود و به سایز می‌رسد، همین ترتیب را در پنل نگه دارید. همچنین گزینه Used for variations را فقط برای attribute هایی فعال کنید که واقعاً بین نسخه‌ها تفاوت ایجاد می‌کنند. اگر یک ویژگی مثل جنس کالا در همه variation ها یکسان است، آن را به عنوان attribute معمولی نگه دارید تا لیست variation ها بی‌دلیل بزرگ نشود. برای اطلاعات بیشتر درباره ساخت attribute و تنظیمات اولیه، به تنظیمات اولیه ووکامرس سر بزنید.

Attribute های سراسری در برابر محلی

یک اشتباه رایج این است که مدیر فروشگاه برای هر محصول جدید، یک attribute محلی جدید می‌سازد. نتیجه بعد از چند ماه: ده‌ها attribute تکراری با نام‌های شبیه به هم که نه فیلتر می‌سازند نه گزارش. قاعده من این است: اگر یک ویژگی در بیش از دو محصول تکرار می‌شود، global بسازید. اگر فقط مخصوص یک محصول است و هرگز تکرار نمی‌شود، محلی بماند. برای طراحی یک سیستم فیلتر حرفه‌ای در فروشگاه، این تصمیم را جدی بگیرید چون به سئوی فروشگاه ووکامرس و ساخت صفحات لندینگ فیلترشده گره می‌خورد.

ساخت گام‌به‌گام یک variable product

مسیر ساخت ساده است اما جزئیات سرنوشت‌ساز:

  1. در پیشخوان به Products → Add New بروید.
  2. در بخش Product data، گزینه Variable product را انتخاب کنید.
  3. تب Attributes را باز کنید و attribute های موردنیاز را اضافه کنید.
  4. تیک Used for variations را بزنید و Save attributes کنید.
  5. تب Variations را باز کنید و روی Generate variations بزنید تا ووکامرس همه ترکیب‌ها را بسازد.
  6. هر variation را باز کنید و قیمت، موجودی، SKU و تصویر جدا بگذارید.
  7. روی Save changes بزنید.

یک نکته که خیلی‌ها نمی‌دانند: اگر تعداد ترکیب‌ها زیاد شود، ووکامرس رفتار متفاوتی در صفحه محصول در پیش می‌گیرد. تا حدود پنجاه variation، همه dropdown ها نمایش داده می‌شوند. بالاتر از آن، دکمه Add to cart به صورت AJAX کار می‌کند و ممکن است کندتر شود. برای فروشگاه‌های بزرگ، معمولاً بهتر است محصول را به چند والد شکست. این تصمیم را در طراحی محصول، نه بعد از انتشار، بگیرید.

وارد کردن variation ها از CSV هم راه سریع‌تری است. اگر تعداد variation ها از چند ده بگذرد، دستی ساختن‌شان وقت‌گیر و خطاپذیر است. افزونه رسمی Product CSV Importer and Exporter از ووکامرس، هم ساختار درست برای variable product را می‌شناسد و هم می‌تواند به‌روزرسانی گروهی قیمت‌ها را ممکن کند. برای پروژه‌هایی که انبار مرکزی دارند، این مسیر از ساخت دستی سریع‌تر و بی‌خطاتر است؛ جزئیات فنی‌اش در اتصال ووکامرس به API های خارجی باز شده.

مدیریت تصاویر variation و تجربه کاربر

اگر variation تصویر جدا داشته باشد، وقتی مشتری آن ترکیب را انتخاب می‌کند، تصویر محصول عوض می‌شود. این قابلیت در ظاهر کوچک است، اما در نرخ تبدیل نقش مهمی دارد. یک نکته عملی که در پروژه‌ها زیاد به کارم آمده: تصویر شاخص والد را همان variation پیش‌فرض بگذارید. ووکامرس در ابتدای بارگذاری صفحه، تصویر variation اولی که در لیست است را نشان می‌دهد؛ اگر آن تصویر با چیزی که در گوگل ایندکس شده فرق داشته باشد، تجربه آشفته می‌شود.

علاوه بر این، برای هر variation تصویر در اندازه مربع و با پس‌زمینه یکدست آماده کنید. قالبی که استفاده می‌کنید ممکن است نسبت‌های متفاوتی داشته باشد. اگر از قالب‌های آماده ووکامرس استفاده می‌کنید، پیشنهاد می‌کنم قالب‌های سازگار با ووکامرس را ببینید؛ بعضی از آن‌ها رفتار تصویر variation را بهتر از بقیه مدیریت می‌کنند. برای فروشگاهی که روی موبایل هم جدی است، این جزئیات تفاوت محسوسی می‌سازد.

قیمت‌گذاری، موجودی و variation های پنهان

سه الگوی قیمت‌گذاری در variable product وجود دارد که انتخاب هرکدام تجربه کاربری متفاوتی می‌سازد:

الگوکجا مناسب استنکته
قیمت یکسان همه variation هامحصولاتی که فقط در رنگ یا اندازه فرق دارندساده‌ترین حالت برای نگهداری
قیمت متفاوت بر اساس ویژگیسایز بزرگ‌تر، هزینه بیشتردرصد تخفیف را جدا برای هر variation چک کنید
قیمت با بازه از-تا در والدنمایش کلی در صفحه دستهبازه معمولاً از ارزان‌ترین تا گران‌ترین نمایش داده می‌شود

در بخش موجودی، گزینه Manage stock در سطح variation معنا پیدا می‌کند. یک الگوی غلط که زیاد دیده‌ام: مدیر فروشگاه در سطح والد موجودی می‌گذارد و انتظار دارد در تمام variation ها اعمال شود. چنین چیزی وجود ندارد. موجودی هر variation مستقل است. برای رفع خطاهای مربوط به موجودی، مدیریت موجودی محصولات در ووکامرس را ببینید.

variation های پنهان یک قابلیت است که گاهی به داد می‌رسد. اگر variation از موجودی خارج شود اما می‌خواهید در dropdown بماند، تیک Visible on the product page را بردارید و به جای حذف، غیرفعالش کنید. این کار تاریخچه SKU را نگه می‌دارد و لینک‌های قدیمی که به آن variation اشاره دارند، نمی‌شکنند.

هیچ‌وقت یک variation را فقط چون فروش ندارد حذف نکنید؛ پنهانش کنید. حذف، یعنی از دست دادن لینک، از دست دادن داده فروش و از دست دادن SKU.

نقش مالیات در قیمت variation

اگر قیمت‌هایتان را با مالیات وارد می‌کنید اما ووکامرس روی حالت محاسبه بدون مالیات تنظیم شده، مشتری در صفحه variation ها عدد اشتباه می‌بیند. تنظیمات نمایش قیمت با یا بدون مالیات، در سطح کل فروشگاه تعیین می‌شود، نه در سطح محصول. اگر مطمئن نیستید روی کدام حالت هستید، تنظیمات مالیات ووکامرس را بخوانید. این نکته در فروشگاه‌هایی که تنوع محصول بالایی دارند بیشترین دردسر را می‌سازد.

خطاهایی که فروشگاه را زمین می‌زند

چند خطای تکرارشونده که در پروژه‌های مختلف دیده‌ام:

  • Attribute غیرفعال اما در variations استفاده‌شده: اگر بعداً attribute را از حالت Used for variations خارج کنید، variation ها ناپدید می‌شوند ولی در دیتابیس می‌مانند.
  • حذف attribute والد بدون پاکسازی: این کار variation های یتیم می‌سازد که در صفحه محصول دیده نمی‌شوند اما در پنل باقی می‌مانند.
  • تصویر شاخص والد که با هیچ variation نمی‌خواند: مشتری را گیج می‌کند.
  • SKU تکراری بین variation ها: در گزارش‌ها باعث خطاهای عجیب می‌شود.
  • قیمت بدون در نظر گرفتن مالیات: باید مشخص کنید که قیمت‌ها با یا بدون مالیات نمایش داده می‌شوند.

اگر بعد از افزودن variation، صفحه محصول بالا نمی‌آید یا اعداد عجیب نشان می‌دهد، قبل از هر چیز با یک افزونه کش، کش صفحه را پاک کنید. اگر مشکل باقی ماند، فهرست خطاهای رایج ووکامرس نقطه شروع مناسبی است.

پرسش‌های پرتکرار درباره محصول متغیر ووکامرس

تفاوت variable product و simple product چیست؟ simple یک نسخه دارد و variable چندین نسخه از یک کالا را در یک صفحه جمع می‌کند. انتخاب بین این دو به تنوع واقعی محصول بستگی دارد، نه به سلیقه.

چند variation روی یک محصول مجاز است؟ محدودیت سخت‌افزاری وجود ندارد اما بعد از حدود پنجاه variation، تجربه کاربر و سرعت بارگذاری افت می‌کند. بهتر است محصولات با variation زیاد، به چند والد شکسته شوند.

چرا variation های من در صفحه محصول نمایش داده نمی‌شوند؟ سه علت رایج: attribute از حالت Used for variations خارج شده، کش صفحه پاک نشده، یا variation از نوع private است. همه سه را با ترتیب بررسی کنید.

آیا می‌توان قیمت را فقط برای بعضی variation ها تعیین کرد؟ بله. اگر variation قیمت نداشته باشد، ووکامرس قیمت والد را در صورت وجود اعمال می‌کند. اما این رفتار همیشه قابل پیش‌بینی نیست؛ بهترین کار، تعیین قیمت برای همه variation ها است.

آیا variable product روی سرعت سایت اثر می‌گذارد؟ بله، کمی. هر variation یک query اضافه و یک قالب اضافه تولید می‌کند. اگر تعداد کل variation ها از چند هزار بگذرد، حتماً افزایش سرعت فروشگاه ووکامرس را جدی بگیرید.

ووکامرس را می‌توان با API هم به سرویس‌های بیرونی متصل کرد و variation ها را از سیستم انبار مرکزی همگام کرد. اگر با خطای سبد خرید مواجه شدید، رفع خطای افزودن به سبد خرید و برای مشکلات پرداخت رفع خطای پرداخت ووکامرس را ببینید.

آنچه بعد از ده‌ها variable product یاد گرفتم

بعد از ده‌ها پروژه، سه قاعده در ذهنم جا افتاده. اول، attribute ها را قبل از محصول بسازید. دوم، variation را مثل یک محصول مستقل در نظر بگیرید: SKU جدا، تصویر جدا، قیمت جدا. سوم، هرگز variation ها را حذف نکنید مگر مطمئن باشید کسی به آن‌ها لینک نداده و در تاریخچه فروش نقشی نداشته‌اند. اگر مسئولیت نگهداری یک فروشگاه با ده‌ها هزار variation دارید، بخشی از بکاپ فروشگاه ووکامرس را به صورت ویژه به جداول variation اختصاص دهید. برای فروشگاهی که تازه راه افتاده هم مطالعه افزایش فروش فروشگاه ووکامرس توصیه می‌شود.

اگر شما هم در پروژه‌ای با variable product غافلگیر شدید — برای مثال بعد از تغییر attribute، نیمی از variation ها ناپدید شدند — تجربه‌تان را در دیدگاه بنویسید. برای من جالب است بدانم کدام رفتار ووکامرس بیشتر از همه شما را وقت‌گیر کرده. ✍️