
قیمت بعضی محصولات از قبل مشخص است و مشتری فقط تعداد آنها را انتخاب میکند. اما وقتی محصول بر اساس اندازه، جنس، نوع چاپ یا خدمات اضافه فروخته میشود، یک قیمت ثابت کافی نیست. برای مثال، قیمت یک تابلوی سفارشی ممکن است با تغییر طول و عرض آن افزایش پیدا کند. در چنین فروشگاهی بهتر است مشتری گزینههای دلخواه را وارد کند و قیمت محصول در ووکامرس بر اساس همان انتخابها محاسبه شود.
افزونه Uni CPO برای همین کار ساخته شده است. در این آموزش، مراحل ساخت فرم قیمتگذاری بر اساس طول و عرض را با تصاویر خود مقاله پیش میبریم، فرمول اصلی را بدون تغییر نگه میداریم و نکاتی را توضیح میدهیم که پیش از فعالسازی در فروشگاه واقعی باید بررسی کنید.
افزونه Uni CPO چیست و برای چه محصولاتی کاربرد دارد؟
افزونه Uni CPO امکان اضافه کردن گزینههای سفارشی به صفحه محصولات ووکامرس را فراهم میکند. مشتری میتواند مقداری مانند طول، عرض یا یک گزینه انتخابی را مشخص کند و افزونه بر اساس فرمولی که مدیر فروشگاه تعریف کرده، قیمت را محاسبه کند. به این ترتیب برای هر اندازه یا انتخاب متفاوت، لزوماً به ساخت یک محصول مستقل نیاز ندارید.
برای مثال میتوان از این قابلیت در فروش پرده، چاپ بنر، توری، محصولات برشخورده یا کالاهای تولیدشده با ابعاد سفارشی استفاده کرد. فرمساز افزونه اجازه میدهد فیلدهای ورودی را کنار متن و بخشهای ظاهری موردنیاز بچینید. تصویر زیر نمونهای از فرم سفارشیسازی محصول در Uni CPO را نشان میدهد.

نکته مهم این است که نسخه رایگان و حرفهای امکانات یکسانی ندارند. قابلیتهای پایه مثل ساخت فرم، ورودی متن و فرمول محاسبه در راهنمای نسخه رایگان معرفی شدهاند، اما امکاناتی مثل بعضی حالتهای انتخاب تصویری، بارگذاری فایل و امکانات پیشرفته جدول قیمت ممکن است به نسخه حرفهای نیاز داشته باشند. هنگام انتخاب افزونه، امکانات موردنیاز فروشگاه را با توضیحات نسخهای که نصب میکنید تطبیق دهید.
پیشنیازهای محاسبه قیمت محصولات با Uni CPO
پیش از شروع، ووکامرس باید نصب و فعال باشد. در مستندات رسمی Uni CPO برای آموزش فرمساز، تأکید شده است که محصول موردنظر از نوع محصول ساده باشد و در قسمت قیمت عادی آن، یک قیمت اولیه ثبت شده باشد؛ در غیر این صورت ممکن است گزینههای سفارشی یا دکمه افزودن به سبد خرید نمایش داده نشوند.
همچنین افزونه در تنظیمات همان محصول دو گزینه جداگانه دارد: یکی برای نمایش فیلدهای سفارشی و دیگری برای محاسبه قیمت با آنها. بنابراین اگر فرم را ساختهاید ولی تغییرات قیمت در صفحه محصول دیده نمیشود، فعال بودن این دو تنظیم را بررسی کنید. نام بعضی گزینهها در نسخههای تازه ممکن است با تصاویر قدیمی همین آموزش کمی تفاوت داشته باشد.
قبل از تغییر محصول اصلی فروشگاه، بهتر است یک نسخه آزمایشی از آن بسازید. این کار به شما اجازه میدهد فرمول، واحد اندازهگیری و عملکرد افزودن محصول به سبد خرید را بدون تأثیر بر سفارشهای مشتریان بررسی کنید.
نصب افزونه و ورود به محصول در ووکامرس
از پیشخوان وردپرس وارد افزونهها ← افزودن افزونه تازه شوید، عبارت Uni CPO را جستوجو کنید و افزونه رسمی با نام Product Options and Price Calculation Formulas for WooCommerce را نصب و فعال کنید. قبل از نصب، پیشنیازهای نسخه منتشرشده، از جمله نسخه PHP و سازگاری ووکامرس را در صفحه رسمی افزونه در مخزن وردپرس ببینید.
پس از فعالسازی، از بخش محصولات ← همه محصولات، محصولی را که میخواهید قیمت آن براساس ابعاد تعیین شود انتخاب کنید. اگر هنوز محصولی نساختهاید، ابتدا یک محصول ساده ایجاد کنید و قیمت اولیه آن را وارد کنید.

باز کردن فرمساز افزونه برای محصول
در نسخهای که تصاویر این مقاله از آن تهیه شدهاند، داخل ویرایش محصول و بخش اطلاعات محصول، سربرگی با عنوان CPO Form Builder وجود دارد. از آنجا میتوانید روی دکمه Go to the Builder بزنید. در بعضی نسخهها لینک ورود به فرمساز در بخش دیگری از صفحه ویرایش محصول یا فهرست محصولات قرار میگیرد.

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

بخشهای اصلی فرمساز
در تصویر زیر دو گروه اصلی ابزارهای نسخه آموزشی را میبینید. بخش Basic Modules برای ایجاد ردیف، ستون، پاراگراف، دکمه و تصویر است. بخش Options برای گرفتن اطلاعات از مشتری به کار میرود و فیلدهایی مانند ورودی متن، ناحیه متن، فهرست انتخاب و دکمه رادیویی دارد.

برای نمونهای که در ادامه میسازیم، از دو ورودی متنی برای طول و عرض استفاده خواهیم کرد. این قابلیت با افزودن فیلدهای دلخواه به محصول ووکامرس برای ثبت اطلاعات ثابت تفاوت دارد؛ در اینجا مقدار ورودی باید در محاسبه قیمت هم به کار برود. همچنین فرمساز بخشی مخصوص تعریف فرمول قیمت دارد که در تصاویر قدیمی با علامت Fx مشخص است.

با باز کردن بخش فرمول، پنجرهای نمایش داده میشود که جای وارد کردن Main Formula و متغیرهای قابل استفاده را نشان میدهد. فعلاً لازم نیست فرمولی بنویسید؛ ابتدا باید فیلدهای طول و عرض را ایجاد کنیم تا شناسه هرکدام برای محاسبه در دسترس باشد.

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

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

برای اینکه دو ورودی کنار هم نمایش داده شوند، ابتدا روی ابزارهای ستون کلیک کنید و تنظیمات آن را باز کنید. در این مثال ستونها قرار است هرکدام نیمی از عرض ردیف را اشغال کنند.

در تنظیمات ستون، مقدار Width را مانند تصویر روی ۵۰ درصد قرار دهید. دقت کنید واحد اندازهگیری عرض ستون درصد باشد، نه پیکسل؛ زیرا نمایش در دستگاههای مختلف به این انتخاب وابسته است.

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

حالا ستون را از منوی ابزارهای همان ستون با گزینه Duplicate تکثیر کنید تا بتوانید دو قسمت هماندازه برای فیلدهای طول و عرض بسازید.

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

نوشتن عنوان طول و عرض
از بخش Basic Modules گزینه Paragraph را بردارید و در فضای بالای هر ورودی قرار دهید. این پاراگرافها قرار است فقط نام فیلدها را به مشتری نشان دهند.

پس از قرار دادن دو پاراگراف، جایگاه عنوانها ایجاد میشود. هنوز باید نوشته پیشفرض هر پاراگراف را با عنوان درست عوض کنید.

برای تغییر متن پاراگراف، روی آن کلیک کنید و تنظیمات مربوط به همان بخش را باز کنید.

در گزینه Content عبارت «طول» را برای عنوان اول وارد کنید و تغییرات را ذخیره کنید. برای عنوان دوم همین کار را با کلمه «عرض» انجام دهید.

اکنون فرم دارای دو عنوان مشخص است. بهتر است از همین ابتدا واحد اندازهگیری را هم در عنوان یا توضیح محصول روشن کنید؛ برای مثال «طول به متر» و «عرض به متر». اگر قیمت پایه مربوط به هر مترمربع است، وارد کردن سانتیمتر بدون تبدیل واحد باعث اشتباه در قیمت میشود.

افزودن فیلدهای ورود مقدار
از گروه Options، گزینه Text Input را برای طول و یک بار دیگر برای عرض به جایگاههای خالی اضافه کنید. برای محاسبه قیمت باید مقدارهای واردشده عددی و معتبر باشند؛ این نکته را در تنظیمات فیلدها کنترل خواهیم کرد.

در پایان این مرحله باید دو ورودی در کنار عنوانهای آنها دیده شوند. شکل زیر نمای اولیه فرم را نشان میدهد. در این نقطه فقط ظاهر فرم آماده شده و هنوز شناسه متغیرها و فرمول قیمت را مشخص نکردهایم.

تعیین شناسه فیلدهای طول و عرض
Uni CPO برای استفاده از هر گزینه در فرمول، یک شناسه یا نام مشخص در نظر میگیرد. به همین دلیل لازم است فیلد طول و فیلد عرض، دو شناسه متفاوت داشته باشند. در تصاویر مقاله، برای باز کردن تنظیمات هر فیلد از علامت چرخدنده کنار آن استفاده شده است.

داخل تنظیمات فیلد، تب Main و گزینه Field slug را پیدا کنید. شناسه این بخش با نامی که مشتری روی صفحه محصول میبیند تفاوت دارد؛ این شناسه برای شناسایی مقدار در فرمول به کار میرود.
در آموزش اصلی برای فیلد طول نام height_h1 استفاده شده است و افزونه آن را با پیشوند خودش به متغیر {uni_cpo_height_h1} تبدیل میکند. این نامها را همانطور که در فرمول مقاله آمدهاند حفظ میکنیم تا نمونه آموزشی با تصاویر هماهنگ بماند.

پس از وارد کردن شناسه، تنظیمات همان فیلد را ذخیره کنید. دقت کنید ذخیره در پنجره تنظیمات گزینه با ذخیره نهایی کل فرمساز یکسان نیست؛ هر دو مرحله باید در جای خود انجام شوند.

برای فیلد دیگر، مقدار width_w1 را در بخش Field slug قرار دهید. در این حالت متغیر مربوط به عرض، {uni_cpo_width_w1} خواهد بود. برای جلوگیری از خطا، نام شناسهها نباید تکراری باشد.

تعیین مقدار اولیه و اعتبارسنجی اعداد
به تنظیمات هر دو فیلد بروید و در بخش Default (initial) value یک مقدار اولیه مناسب وارد کنید. در مثال قدیمی این مقدار ۱ است تا هنگام باز شدن صفحه، ورودیها خالی نباشند. البته مقدار اولیه باید با نوع محصول شما سازگار باشد و تنها راه مدیریت فیلد خالی نیست؛ میتوانید از تنظیمات اجباری بودن، نوع عددی ورودی و اعتبارسنجی هم استفاده کنید.
مقدار یک دادن به valueاگر قیمت بر اساس مساحت حساب میشود، بهتر است مقدار صفر یا عدد منفی پذیرفته نشود و درباره اعشار نیز از قبل تصمیم بگیرید. برای مثال فروش پرده برحسب متر ممکن است به مقدار ۱٫۵ نیاز داشته باشد، اما کالایی که فقط در اندازههای مشخص عرضه میشود باید محدودیت دیگری داشته باشد. این تنظیمات را پیش از انتشار محصول آزمایش کنید.
نوشتن فرمول محاسبه قیمت محصول
حالا نوبت ارتباط دادن طول و عرض با قیمت پایه است. در نمونه این مقاله، رابطه محاسبه به شکل زیر است: قیمت نهایی = قیمت اولیه محصول × طول × عرض. برای وارد کردن فرمول در محیط آموزشی تصویر، از دکمه Fx استفاده کنید.

بعد از باز شدن پنجره فرمول، متغیرهای تعریفشده برای گزینههای محصول در فهرست Available variables ظاهر میشوند. میتوانید بهجای تایپ دستی نام متغیرها، آنها را از همین بخش وارد فرمول کنید. این کار احتمال غلط املایی در شناسهها را کمتر میکند.

{uni_cpo_price}*{uni_cpo_width_w1}*{uni_cpo_height_h1}
در این عبارت، {uni_cpo_price} قیمت پایه محصول در ووکامرس است. متغیر {uni_cpo_width_w1} مقدار عرض و {uni_cpo_height_h1} مقدار طول را دریافت میکند. برای مثال اگر قیمت پایه را ۵ واحد، طول را ۳ و عرض را ۲ در نظر بگیریم، حاصل برابر با ۳۰ واحد خواهد بود.
در این مثال، سه عدد فقط زمانی معنی درستی دارند که واحد آنها با هم سازگار باشد. اگر قیمت بر اساس مترمربع تعریف شده ولی طول و عرض را برحسب سانتیمتر دریافت میکنید، باید تبدیل واحد را در روش قیمتگذاری لحاظ کنید؛ این تبدیل جزو فرمول فعلی مقاله نیست و نباید بدون بررسی، همان فرمول را برای هر واحد اندازهگیری استفاده کرد.

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

برای کنترل ظاهر و نتیجه، از پیشنمایش فرمساز استفاده کنید. پیشنمایش کمک میکند بفهمید فیلدها در جای درستی قرار گرفتهاند و با تغییر مقدار آنها، قیمت جدید نمایش داده میشود یا خیر.

تصویر زیر نتیجه مثال را نشان میدهد. در محصولی با قیمت پایه ۵ واحد، طول ۳ و عرض ۲، قیمت نهایی ۳۰ واحد محاسبه شده است. این یک نمونه آموزشی است و واحد پول، حداقل ابعاد و فرمول فروشگاه واقعی باید بر اساس محصول خودتان تنظیم شوند.

بررسی قیمت نهایی در سبد خرید و ثبت سفارش
نمایش قیمت درست در صفحه محصول اولین آزمون است، نه آخرین آزمون. قبل از استفاده از فرمول روی یک کالای واقعی، با چند مقدار متفاوت سفارش آزمایشی بسازید و بررسی کنید قیمت محاسبهشده در سبد خرید، تسویهحساب و جزئیات سفارش نیز همان مقداری باشد که انتظار دارید.
بهویژه اگر محصول تخفیف، مالیات، هزینه ارسال وابسته به وزن یا چند گزینه سفارشی دارد، نتیجه را جداگانه بررسی کنید. ممکن است فرمول قیمت پایه درست باشد ولی مبلغ نهایی سفارش تحت تأثیر تنظیمات دیگر ووکامرس قرار بگیرد. برای شناخت تنظیمات فروشگاه میتوانید از راهنمای نصب و راهاندازی ووکامرس استفاده کنید.
امکانات نسخه رایگان و حرفهای Uni CPO
طبق راهنمای رسمی سازنده، نسخه رایگان امکان طراحی فرم با ردیف و ستون، افزودن ورودی متن، ناحیه متن، فهرست انتخاب و دکمههای رادیویی ساده، تعریف متغیرهای محاسباتی و ساخت فرمول قیمت را در اختیار میگذارد. قابلیتهای پیشرفتهتری مانند برخی شکلهای انتخاب تصویری، بارگذاری فایل، تقویم انتخاب تاریخ، تغییر تصویر محصول بر اساس گزینهها و بعضی روشهای جدول قیمت در نسخه حرفهای معرفی شدهاند.
اگر در توضیحات افزونه به امکاناتی مانند محاسبه پویا وزن یا ابعاد برخورد کردید، توجه داشته باشید که این امکانات با محاسبه مستقیم هزینه ارسال یکی نیستند. سازنده نیز توضیح داده که محاسبه وزن میتواند اطلاعات لازم را در اختیار ابزار حملونقل سازگار قرار دهد، اما خود افزونه بهتنهایی قرار نیست هزینه ارسال همه سرویسهای حملونقل را محاسبه کند.
از آنجا که امکانات و پیشنیازها در نسخههای مختلف تغییر میکنند، قبل از خرید نسخه حرفهای یا انتخاب روش پیادهسازی، فهرست امکانات نسخه رایگان و حرفهای در مستندات سازنده را بررسی کنید.
رفع مشکلات رایج محاسبه قیمت با افزونه Uni CPO
فیلدهای سفارشی روی صفحه محصول نمایش داده نمیشوند
اول بررسی کنید محصول از نوع ساده باشد و یک قیمت اولیه برای آن ثبت شده باشد. سپس در تنظیمات اختصاصی Uni CPO، فعال بودن نمایش گزینههای سفارشی را کنترل کنید. بعد مطمئن شوید فرمساز را بهصورت نهایی ذخیره کردهاید و گزینهها واقعاً به همان محصول متصل هستند.
مقادیر تغییر میکنند اما قیمت ثابت میماند
گزینه محاسبه قیمت بر اساس گزینههای سفارشی را در تنظیمات محصول بررسی کنید. بعد مطمئن شوید نام متغیرها دقیقاً با شناسه فیلدها یکسان است. برای نمونه، اگر شناسه طول را تغییر دادهاید ولی فرمول همچنان {uni_cpo_height_h1} را استفاده میکند، محاسبه مطابق انتظار انجام نخواهد شد.
قیمت صفر یا اشتباه نمایش داده میشود
مقدار اولیه فیلدها، نوع ورودی عددی و واحد اندازهگیری را بررسی کنید. همچنین مطمئن شوید قیمت پایه محصول خالی نیست. اگر از گزینهای در چند محصول استفاده میکنید، به ارتباط تنظیمات مشترک میان محصولات هم توجه کنید؛ سازنده در راهنمای رفع خطا هشدار میدهد که بازنویسی ناخواسته تنظیمات گزینهها میتواند به محاسبه نادرست قیمت منجر شود.
فرم در محصول درست است اما در سبد خرید نتیجه متفاوت است
قیمت سبد خرید را با تخفیف، مالیات و تعداد محصول مقایسه کنید. در محیط آزمایشی، افزونههای مرتبط با قیمتگذاری، حملونقل و بهینهسازی را یکییکی بررسی کنید تا مشخص شود اختلاف از محاسبه افزونه است یا از تنظیمات دیگر فروشگاه. نسخه افزونه و ووکامرس نیز باید با هم سازگار باشند.