Blog

توسعه و سفارشی‌سازی ووکامرس چیست و چگونه انجام می‌شود؟

ووکامرس یکی از پراستفاده‌ترین پلتفرم‌های فروشگاه‌ساز در دنیاست و میلیون‌ها فروشگاه فعال روی آن اجرا می‌شوند. این گستردگی یک مزیت بزرگ دارد: اکوسیستم عظیمی از افزونه‌ها، مستندات و توسعه‌دهنده‌ها پشت آن است. اما دقیقا همین گستردگی باعث می‌شود خیلی از صاحبان فروشگاه، وقتی به یک…
لینک کوتاه مطلب
کپی شد 🙂
توسعه و سفارشی‌سازی ووکامرس چیست و چگونه انجام می‌شود؟ - وب‌کاستر
بدون دیدگاه

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

توسعه و سفارشی‌سازی ووکامرس یعنی چه؟

ووکامرس یک افزونه‌ی فروشگاه‌ساز برای وردپرس است که رفتار پیش‌فرضش (نمایش محصول، سبد خرید و پرداخت) برای اکثر فروشگاه‌های عمومی طراحی شده. سفارشی‌سازی یعنی تغییر این رفتار پیش‌فرض، از طریق تنظیمات و افزونه‌های مکمل یا سیستم Hook ووکامرس (که در ادامه دقیق توضیح می‌دهیم)، تا فروشگاه دقیقا مطابق مدل کسب‌وکار شما رفتار کند.

چهار سناریوی واقعی که نشان می‌دهند نیاز هر فروشگاه فرق دارد:

سناریو اول یک فروشگاه B2B با قیمت‌گذاری پلکانی

یک فروشگاه عمده‌فروشی می‌خواهد قیمت هر محصول بر اساس تعداد خرید تغییر کند؛ مثلا برای خرید بالای ۵۰ عدد، ۱۰٪ تخفیف به‌صورت خودکار اعمال شود. ووکامرس به‌صورت پیش‌فرض چنین منطقی ندارد. این نیاز معمولا با یک افزونه‌ی تخصصی قیمت‌گذاری پلکانی یا در پروژه‌های خاص، با کد اختصاصی روی Filter مربوط به محاسبه‌ی قیمت حل می‌شود.

سناریو دوم یک فروشگاه اشتراکی (Subscription)

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

سناریو سوم یک فروشگاه چند فروشندگی (Marketplace)

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

سناریو چهارم یک فروشگاه با محصولات قابل‌ تنظیم (Customizable Products)

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

Hook و Filter در ووکامرس؛ ابزار اصلی هر توسعه‌دهنده

برای این‌که بدانید سفارشی‌سازی کدی دقیقا چطور کار می‌کند (بدون این‌که لازم باشد خودتان کد بزنید)، دو مفهوم کلیدی را باید بشناسید:

Action Hook

نقطه‌ای در کد ووکامرس است که به شما اجازه می‌دهد یک کار جدید اضافه کنید، بدون این‌که رفتار اصلی را تغییر دهید. مثلا woocommerce_before_add_to_cart_button نقطه‌ای است که دقیقا قبل از دکمه‌ی افزودن به سبد خرید اجرا می‌شود و می‌توان در آن یک پیام یا فیلد سفارشی اضافه کرد.

Filter Hook

نقطه‌ای است که به شما اجازه می‌دهد یک مقدار یا داده‌ی موجود را قبل از نمایش یا استفاده، تغییر دهید. مثلا woocommerce_get_price_html می‌تواند نحوه‌ی نمایش قیمت را تغییر دهد؛ برای مثال، می‌توان برچسب شامل مالیات را کنار قیمت اضافه کرد.

تفاوتشان خیلی ساده است؛ Action یعنی یک کار انجام بده، Filter یعنی یک مقدار را عوض کن و برگردان.

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

مهم‌ترین بخش‌هایی که معمولا نیاز به سفارشی‌سازی دارند:

صفحه‌ی محصول

نمایش قیمت، ویژگی‌های محصول، تب‌های اضافی (مثل راهنمای سایز)، پیشنهادهای مرتبط هوشمندتر یا فیلدهای سفارشی، مثل سناریوی ۴.

فرآیند پرداخت و تسویه‌حساب (Checkout)

حذف فیلدهای غیرضروری (از طریق فیلتر woocommerce_checkout_fields)، افزودن روش‌های پرداخت خاص یا تغییر مراحل خرید برای کاهش نرخ رهاسازی سبد خرید.

حساب کاربری مشتری

شخصی‌سازی فرآیند ثبت‌نام، نمایش اطلاعات اضافه در پروفایل مشتری یا تغییر قوانین مربوط به سفارش‌های ناتمام و لغوشده.

پنل مدیریت سفارش‌ها

افزودن وضعیت‌های سفارشی سفارش (مثلا در حال بسته‌بندی بین پرداخت‌شده و ارسال‌شده)، برچسب‌گذاری و گزارش‌گیری دقیق‌تر برای فروشگاه‌های پرحجم.

چرا زیاد شدن افزونه‌ها همیشه بهترین راه‌حل نیست؟

یک اشتباه رایج بین صاحبان فروشگاه این است که برای هر نیاز جدید، سراغ نصب افزونه جدید می‌روند. مشکل اینکار اینجا هست که؛

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

افزونه‌های مختلف می‌توانند روی یک Hook مشترک با هم تداخل داشته باشند؛ مثلا دو افزونه‌ی مختلف هم‌زمان بخواهند woocommerce_before_add_to_cart_button را تغییر دهند و نتیجه غیرقابل‌پیش‌بینی شود.

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

در مقابل، یک تکه کد سبک که دقیقا همان Hook موردنیاز را هدف می‌گیرد، معمولا سریع‌تر، پایدارتر و قابل‌نگهداری‌تر از ترکیب چند افزونه‌ی نیمه‌ مرتبط است.

نکات عملکردی که کمتر به آن‌ها توجه می‌شود

سفارشی‌سازی درست فقط به معنی کد نوشتن نیست؛ کد باید طوری نوشته شود که فروشگاه را کند نکند.

استفاده از Object Caching

وقتی یک محاسبه (مثل قیمت‌گذاری پلکانی در سناریوی ۱) پرهزینه است، نتیجه‌ی آن باید به‌صورت موقت Cache شود تا هر بار از صفر محاسبه نشود.

استفاده از Transient API وردپرس

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

پرهیز از Query سنگین داخل Hookهای پرتکرار

بعضی Hookها، مثل مواردی که در صفحه‌ی محصول یا لیست محصولات اجرا می‌شوند، تعداد دفعات زیادی فراخوانی می‌شوند. قرار دادن یک کوئری سنگین داخل این Hookها می‌تواند اثر قابل‌ توجهی روی سرعت کل صفحه داشته باشد.

مراحل کلی یک پروژه‌ی سفارشی‌سازی حرفه‌ای ووکامرس

  1. بررسی فروشگاه فعلی؛ شناخت افزونه‌ها، قالب و نحوه‌ی فعلی مدیریت فروش.
  2. مشخص کردن دقیق نیاز و تطبیق آن با یکی از سناریوهای بالا؛ برای درک سطح پیچیدگی واقعی پروژه.
  3. تصمیم‌گیری بین افزونه یا کدنویسی؛ بر اساس پیچیدگی نیاز و تعداد افزونه‌های فعلی.
  4. پیاده‌سازی از طریق Hook/Filter اختصاصی (در صورت نیاز به کد)؛ بدون دستکاری مستقیم فایل‌های اصلی افزونه.
  5. بررسی تأثیر روی عملکرد؛ با توجه به نکات بخش قبل، مثل Caching و جلوگیری از Queryهای سنگین.
  6. تست کامل فرآیند خرید؛ از انتخاب محصول تا تکمیل پرداخت، در سناریوهای مختلف.

اشتباهات رایجی که باید از آن‌ها دوری کنید

  • نصب چندین افزونه برای یک هدف مشترک، معمولا باعث تداخل و کندی می‌شود.
  • ویرایش مستقیم فایل‌های اصلی افزونه‌ی ووکامرس، با هر آپدیت از بین می‌رود؛ بهتر است تغییرات از طریق Hook/Filter و در فایل‌های اختصاصی انجام شوند.
  • نادیده گرفتن تست فرآیند پرداخت بعد از هر تغییر، چون پرداخت حساس‌ترین بخش فروشگاه است.
  • گذاشتن محاسبات سنگین بدون Cache در Hookهای پرتکرار، دقیقا همان چیزی که در بخش عملکرد توضیح داده شد.

جمع‌بندی

سفارشی‌سازی ووکامرس، بسته به مدل کسب‌وکار شما، می‌تواند از یک تغییر ساده در صفحه‌ی محصول تا پیاده‌سازی یک منطق کامل قیمت‌گذاری یا فروشگاه چندفروشندگی پیش برود. سیستم Hook و Filter ووکامرس، ابزار اصلی این سفارشی‌سازی‌هاست و اجازه می‌دهد بدون دستکاری فایل‌های اصلی، تغییرات را به‌شکل پایدار پیاده‌سازی کنید.

اما مهم‌تر از خود کد، توجه به عملکرد است؛ چون یک سفارشی‌سازی که فروشگاه را کُند کند، ممکن است بیشتر از آن‌که مشکل را حل کند، مشکل جدید ایجاد کند.

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

Experience

تجربه در عمل

هر پروژه، داستان متفاوتی دارد و هر همکاری تجربه‌ای ارزشمند به همراه می‌آورد. طی سال‌های فعالیت، افتخار همکاری با کسب‌وکارهای متعددی در حوزه‌های مختلف را داشته‌ایم و تلاش کرده‌ایم برای هر پروژه، راهکاری متناسب با نیاز همان کسب‌وکار ارائه دهیم.

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

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

با تشکر
امین مهتابی
مدیر توسعه بازار

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

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

این مقاله چقدر برایتان مفید بود؟ با امتیاز دادن، نظرتان را با ما در میان بگذارید.

5/5 - (1 امتیاز)
FAQ

سوالات متداول

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.

سه + پنج =

keyboard_arrow_up