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

ووکامرس یکی از پراستفادهترین پلتفرمهای فروشگاهساز در دنیاست و میلیونها فروشگاه فعال روی آن اجرا میشوند. این گستردگی یک مزیت بزرگ دارد: اکوسیستم عظیمی از افزونهها، مستندات و توسعهدهندهها پشت آن است. اما دقیقا همین گستردگی باعث میشود خیلی از صاحبان فروشگاه، وقتی به یک نیاز خاص میرسند، ندانند باید دنبال یک افزونهی دیگر بگردند یا وقتش رسیده سراغ کدنویسی اختصاصی بروند. این مقاله دقیقا همین مرز را با مثالهای واقعی روشن میکند.
ووکامرس یک افزونهی فروشگاهساز برای وردپرس است که رفتار پیشفرضش (نمایش محصول، سبد خرید و پرداخت) برای اکثر فروشگاههای عمومی طراحی شده. سفارشیسازی یعنی تغییر این رفتار پیشفرض، از طریق تنظیمات و افزونههای مکمل یا سیستم Hook ووکامرس (که در ادامه دقیق توضیح میدهیم)، تا فروشگاه دقیقا مطابق مدل کسبوکار شما رفتار کند.
یک فروشگاه عمدهفروشی میخواهد قیمت هر محصول بر اساس تعداد خرید تغییر کند؛ مثلا برای خرید بالای ۵۰ عدد، ۱۰٪ تخفیف بهصورت خودکار اعمال شود. ووکامرس بهصورت پیشفرض چنین منطقی ندارد. این نیاز معمولا با یک افزونهی تخصصی قیمتگذاری پلکانی یا در پروژههای خاص، با کد اختصاصی روی Filter مربوط به محاسبهی قیمت حل میشود.
یک سرویس میخواهد مشتریها ماهانه بهصورت خودکار مبلغ مشخصی پرداخت کنند و دسترسیشان تمدید شود. این نیاز به منطق زمانبندی، اتصال به درگاه پرداخت برای پرداختهای تکرارشونده و مدیریت وضعیت اشتراک دارد؛ ترکیبی از یک افزونهی تخصصی اشتراک و گاهی کدنویسی برای بخشهای خاص کسبوکار.
یک پلتفرم میخواهد چند فروشندهی مستقل، هرکدام محصولات خودشان را بفروشند و سفارشها بین چند فروشنده تقسیم شوند (Split Order). این یکی از پیچیدهترین حالتهای سفارشیسازی است، چون باید سیستم پرداخت، مدیریت موجودی و پنل هر فروشنده جداگانه مدیریت شود. معمولا ترکیبی از یک افزونهی پایهی چندفروشندگی و کدنویسی سنگین برای نیازهای اختصاصی موردنیاز است.
مثلا یک فروشگاه چاپ روی لیوان یا فروش محصولات حکاکی شده که مشتری باید قبل از خرید، متن یا تصویر دلخواهش را وارد کند. این نیاز به فیلدهای سفارشی در صفحهی محصول و ذخیرهی این اطلاعات همراه با سفارش دارد و یکی از رایجترین درخواستهای کدنویسی اختصاصی در ووکامرس است.
برای اینکه بدانید سفارشیسازی کدی دقیقا چطور کار میکند (بدون اینکه لازم باشد خودتان کد بزنید)، دو مفهوم کلیدی را باید بشناسید:
نقطهای در کد ووکامرس است که به شما اجازه میدهد یک کار جدید اضافه کنید، بدون اینکه رفتار اصلی را تغییر دهید. مثلا woocommerce_before_add_to_cart_button نقطهای است که دقیقا قبل از دکمهی افزودن به سبد خرید اجرا میشود و میتوان در آن یک پیام یا فیلد سفارشی اضافه کرد.
نقطهای است که به شما اجازه میدهد یک مقدار یا دادهی موجود را قبل از نمایش یا استفاده، تغییر دهید. مثلا woocommerce_get_price_html میتواند نحوهی نمایش قیمت را تغییر دهد؛ برای مثال، میتوان برچسب شامل مالیات را کنار قیمت اضافه کرد.
تفاوتشان خیلی ساده است؛ Action یعنی یک کار انجام بده، Filter یعنی یک مقدار را عوض کن و برگردان.
این سیستم دقیقا همان چیزی است که به توسعهدهنده اجازه میدهد بدون دستکاری فایلهای اصلی ووکامرس، رفتار دلخواه را به فروشگاه اضافه کند.
نمایش قیمت، ویژگیهای محصول، تبهای اضافی (مثل راهنمای سایز)، پیشنهادهای مرتبط هوشمندتر یا فیلدهای سفارشی، مثل سناریوی ۴.
حذف فیلدهای غیرضروری (از طریق فیلتر woocommerce_checkout_fields)، افزودن روشهای پرداخت خاص یا تغییر مراحل خرید برای کاهش نرخ رهاسازی سبد خرید.
شخصیسازی فرآیند ثبتنام، نمایش اطلاعات اضافه در پروفایل مشتری یا تغییر قوانین مربوط به سفارشهای ناتمام و لغوشده.
افزودن وضعیتهای سفارشی سفارش (مثلا در حال بستهبندی بین پرداختشده و ارسالشده)، برچسبگذاری و گزارشگیری دقیقتر برای فروشگاههای پرحجم.
یک اشتباه رایج بین صاحبان فروشگاه این است که برای هر نیاز جدید، سراغ نصب افزونه جدید میروند. مشکل اینکار اینجا هست که؛
هر افزونهی اضافه میتواند چند Query جدید به دیتابیس اضافه کند. در فروشگاهی با چندصد محصول، این تجمیع میتواند بهوضوح سرعت بارگذاری صفحات محصول و پرداخت را پایین بیاورد.
افزونههای مختلف میتوانند روی یک Hook مشترک با هم تداخل داشته باشند؛ مثلا دو افزونهی مختلف همزمان بخواهند woocommerce_before_add_to_cart_button را تغییر دهند و نتیجه غیرقابلپیشبینی شود.
هر آپدیت وردپرس یا ووکامرس، ریسک ناسازگاری با یکی از افزونههای نصبشده را دارد. هرچه تعداد افزونهها بیشتر باشد، احتمال بروز مشکل بعد از هر آپدیت هم بیشتر میشود.
در مقابل، یک تکه کد سبک که دقیقا همان Hook موردنیاز را هدف میگیرد، معمولا سریعتر، پایدارتر و قابلنگهداریتر از ترکیب چند افزونهی نیمه مرتبط است.
سفارشیسازی درست فقط به معنی کد نوشتن نیست؛ کد باید طوری نوشته شود که فروشگاه را کند نکند.
وقتی یک محاسبه (مثل قیمتگذاری پلکانی در سناریوی ۱) پرهزینه است، نتیجهی آن باید بهصورت موقت Cache شود تا هر بار از صفر محاسبه نشود.
برای دادههایی که لازم است هر چند دقیقه یا ساعت یکبار بهروزرسانی شوند، نه در هر بار بارگذاری صفحه، میتوان بهجای محاسبهی زنده از یک مقدار موقتا ذخیره شده استفاده کرد.
بعضی Hookها، مثل مواردی که در صفحهی محصول یا لیست محصولات اجرا میشوند، تعداد دفعات زیادی فراخوانی میشوند. قرار دادن یک کوئری سنگین داخل این Hookها میتواند اثر قابل توجهی روی سرعت کل صفحه داشته باشد.
سفارشیسازی ووکامرس، بسته به مدل کسبوکار شما، میتواند از یک تغییر ساده در صفحهی محصول تا پیادهسازی یک منطق کامل قیمتگذاری یا فروشگاه چندفروشندگی پیش برود. سیستم Hook و Filter ووکامرس، ابزار اصلی این سفارشیسازیهاست و اجازه میدهد بدون دستکاری فایلهای اصلی، تغییرات را بهشکل پایدار پیادهسازی کنید.
اما مهمتر از خود کد، توجه به عملکرد است؛ چون یک سفارشیسازی که فروشگاه را کُند کند، ممکن است بیشتر از آنکه مشکل را حل کند، مشکل جدید ایجاد کند.
اگر سناریوی کسبوکار شما به یکی از موارد بالا نزدیک است، یا نگران تداخل افزونهها و افت سرعت فروشگاه هستید، تیم وبکاستر میتواند این کار را بهصورت اصولی برای شما انجام دهد. جزئیات بیشتر را میتوانید در صفحهی توسعه و سفارشیسازی ووکامرس ببینید.
هر پروژه، داستان متفاوتی دارد و هر همکاری تجربهای ارزشمند به همراه میآورد. طی سالهای فعالیت، افتخار همکاری با کسبوکارهای متعددی در حوزههای مختلف را داشتهایم و تلاش کردهایم برای هر پروژه، راهکاری متناسب با نیاز همان کسبوکار ارائه دهیم.
توی سه تا سایتی که با وبکاستر همکاری داشتم، به جرات میگم تا الان کاری نبوده که ازش خواسته باشم و نتونسته باشه انجام بده. هر جایی هم معرفیش کردم، سربلندم کرده. عالی!
صالح همایی مهر
مدیر دیجیتال مارکتینگ صدراتوزین
این اولین بار بود که آقای سجاد سعادت کار کردم و نوع همکاری به گونهای بود که قطعا در طراحی دو وبسایت دیگه مرتبط با کارم، با ایشون کار خواهم کرد. نحوهی عملکرد ایشون در طراحی، بسیار شسته-رُفته ست و این برای کسانی مثل من که نسبت به کیفیت و رعایت جزئیات وسواس دارن، بسیار جذابه.
هرکاری که خواستم، توی وب سایت من انجام شد؛ بدون هیچ اما و اگر.
از دلایلی که شرکت آرکا ملل رضا مجموعهی وبکاستر را انتخاب کرده میتوان به تجربه قابل قبول این مجموعه در پروژههای متعدد و کسب تجربه متناسب و موثر با سلایق مشتریان و مشکلات کسب و کارهای مختلف و نیز داشتن کارشناسان مجرب و زبده و ارایه راهکارهای سریع برای هر مشکل و نیز شفافیت در کار و عقد قرارداد و ارایه سرویس تضمین شده و همچنین پایبندی به عدم افشای اطلاعات شرکت ها که بی شک از مهمترین موارد استفاده و مراجعه شرکتها به این مجموعه است. وبکاستر مانیتورینگ مداوم سیستم ها و سایتهای شرکتهای طرف قرارداد را تاکنون تضمین کرده است. و این نکتهی مهم برای شرکت ما جزء ارکان اصلی انتخاب محسوب شده است.
همه کلافهاند از برنامهنویسهای نامنظم. همه شاکیاند از طراحان بیتعهد سایت. همه درگیرند با «چشم»های انجامناپذیر و دستمزدهایی که هر بار به بهانهای تراشیده میشود.
بختِ ما در «ویراستاران» بلند بود که سجاد سعادت را یافتیم و از شهریور۱۳۹۵ تاکنون، از اخلاق کاری و تسلط حرفهایاش بهرهها بردهایم. او برنامهنویسی است همیشه در دسترس، خوشبرخورد و با حوصله، دقیق و پاسخگو و در نهایت دوستداشتنی و همیشه همراه. به هرکس هم معرفیاش کردهایم، راضی بوده است.
هر دو؛ چه بخواهید فروشگاهی از صفر راهاندازی کنید و چه فروشگاه فعلیتان نیاز به قابلیت یا اصلاح خاصی داشته باشد.
هزینه بر اساس تعداد محصولات، قابلیتهای موردنیاز و پیچیدگی منطق فروش متغیر است. برای برآورد دقیق، همین حالا با تیم وبکاستر تماس بگیرید یا درخواست مشاوره رایگان ثبت کنید.
بله، اتصال درگاههای پرداخت داخلی بخشی از خدمات این سرویس است.
بسته به پیچیدگی فروشگاه، از چند هفته تا حدود یک تا دو ماه متغیر است.
بله، توسعه و سفارشیسازی فروشگاههای چندفروشنده نیز جزو این خدمت است.
نه؛ برای بسیاری از نیازهای ساده و رایج، افزونههای مکمل کافی هستند. کدنویسی معمولا برای سناریوهای خاصتر (مثل قیمتگذاری پلکانی یا فروشگاه چندفروشندگی) مورد نیاز است.
Action Hook اجازه میده یه کار جدید اضافه کنید بدون تغییر رفتار اصلی؛ Filter Hook اجازه میده یه مقدار یا دادهی موجود رو قبل از نمایش تغییر بدید یا اصطلاحا فیلتر کنید.
بله؛ هر افزونه معمولا چندتا Query اضافه به دیتابیس میزنه و ممکنه با افزونههای دیگه روی یه Hook مشترک تداخل پیدا کنند.
ووکامرس یک افزونهی متن باز روی وردپرس است، یعنی کد و دادههای فروشگاه شما کاملاً متعلق به خودتان است و به هیچ پلتفرم خاصی وابسته نیستید. برخلاف پلتفرمهایی مثل شاپیفای که هزینهی ماهانهی ثابت دارند و برای پرداخت و برخی خدمات محدودیتهایی برای کاربران ایرانی ایجاد میکنند، ووکامرس امکان اتصال آزادانه به درگاههای پرداخت داخلی و کنترل کامل روی هزینههای هاستینگ را میدهد. در ازای این، مدیریت فنی (مثل بهروزرسانی و امنیت) بیشتر بر عهدهی خود شماست؛ چیزی که با گرفتن پشتیبان مناسب، دیگر دغدغهای نخواهد بود.
اگه بدون توجه به Caching و بهینهسازی Query نوشته بشه، بله؛ به همین دلیل بررسی عملکرد بخش جدایی ناپذیر یه پروژه سفارشیسازی حرفهایه.
بستگی به پیچیدگی سناریوی موردنیاز داره؛ برای برآورد دقیق، بهتره وضعیت فروشگاه فعلی توسط یه متخصص بررسی بشه. درصورت تمایل همین حالا با تیم وبکاستر تماس بگیرید یا درخواست مشاوره رایگان ثبت کنید.
سفارشیسازی صفحه محصول میتواند شامل مواردی مثل افزودن تبهای اضافه (مثل راهنمای سایز یا ویدئوی محصول)، تغییر منطق نمایش محصولات مرتبط، افزودن برچسبهای سفارشی (مثل «پرفروش» یا «موجودی محدود»)، تغییر رفتار دکمهی افزودن به سبد خرید، و تنظیم قوانین قیمت گذاری خاص (مثل تخفیف پلکانی) باشد. این تغییرات معمولاً بر اساس نیاز واقعی فروشگاه شما و نحوهی تعامل مشتری با محصولات تعیین میشود.