کد سفارشی وردپرس بهجای افزونه با بودجهٔ محدود؛ چه چیزی واقعاً میارزد؟
فهرست مطالب
در جلسهٔ محصولات یکی میگوید افزونهها سایت را کند و ناامن کردهاند و باید همهچیز سفارشی نوشته شود؛ دیگری میگوید کد سفارشی یعنی گروگان توسعهدهنده. هر دو تا حدی حق دارند. ما در ممیزی یک فروشگاه ۴۰۰ محصولی، ۲۸ افزونهٔ فعال شمردیم که ۹ موردش کار همپوشان انجام میداد؛ نخستین صرفهجویی آن پروژه حذف بود، نه کدنویسی، و همان ترتیبی شد که در ادامه پیشنهاد میکنیم. این مقاله تصمیم را عددی میکند: چارچوب سهپرسشی، جدول هزینهٔ کل مالکیت، بدهی امنیتی، لبههای RTL فارسی و در پایان سطر روشن «برای چه کسی».
چارچوب تصمیم: سه پرسش قبل از هر خط کد
پیش از مقایسهٔ قیمت، سه پرسش را ردیف کنید. اول: این قابلیت مزیت رقابتی مستقیم میسازد یا کارکرد استاندارد است؟ موتور قیمتگذاری خاص شما مزیت است؛ فرم تماس استاندارد نیست. دوم: چه کسی پنج سال از آن نگهداری میکند؟ اگر پاسخ «همان توسعهدهندهٔ پروژه» است، ریسک جدی دارید؛ انسان جابهجا میشود و کد میماند. سوم: پیش از هر دو گزینه، حذف یا جایگزینی را آزمودهاید؟ خیلی از نیازها با پاکسازی برطرف میشوند، نه با ساخت. 
مثال اجرایی: فروشگاهی فرم رزرو سفارشی خواست، در حالی که دو افزونهٔ فرم فعالش همین کار را با تنظیم شرطی انجام میداد. بعد از پاکسازی، نیاز واقعی به یک فیلد اضافه رسید که با چند خط کد مستند حل شد؛ نه با پروژهٔ سهماهه. تفاوت «خواسته» و «نیاز» همانجا روشن شد.
به تجربهٔ ما نیمی از خواستههای «کد سفارشی» با حذف افزونهٔ تکراری و پیکربندی درست دو افزونهٔ باکیفیت برطرف میشود؛ چون منبع کندی معمولاً انباشت است، نه نبود کد اختصاصی. این چارچوب را قبل از درخواست قیمت از هر توسعهدهندهای اجرا کنید؛ پرسشهای بیجواب، قرارداد گران میسازند و دامنهٔ کار مبهم را بعداً با هزینهٔ اضافه میبندند.
هزینهٔ کل مالکیت (TCO) را عدد کنید، نه فقط هزینهٔ ساخت
قیمت ساخت اولیه فریبنده است؛ تصمیم واقعی در پنج سال بعد رقم میخورد. برای هر گزینه پنج قلم را جمع بزنید: ساخت اولیه، نگهداری ماهانه، سازگاری با بهروزرسانی هسته، تست پس از هر آپدیت و هزینهٔ خروج وقتی توسعهدهنده در دسترس نیست. جدول زیر بازهٔ تومانی رایج این اقلام است؛ به تجربهٔ ما این اعداد از پروژههای اجرایی خودمان آمده و با نرخ تیم و شهر، جابهجا میشود. بعد از محاسبه، همین پنج سطر را با پیشفاکتور توسعهدهنده سطربهسطر تطبیق دهید؛ قلمهایی که در پیشفاکتور غایباند، بعداً با عنوان «کار اضافه» برمیگردند.
| قلم هزینه (پنجساله) | افزونهٔ آمادهٔ باکیفیت | کد سفارشی |
|---|---|---|
| ساخت اولیه | ۲ تا ۱۵ میلیون تومان (لایسنس و پیکربندی) | ۶۰ تا ۳۰۰ میلیون تومان |
| نگهداری ماهانه | ۰٫۵ تا ۳ میلیون تومان | ۵ تا ۲۰ میلیون تومان |
| سازگاری با آپدیت هسته | بار روی سازندهٔ افزونه | بار روی شما؛ تست دورهای لازم |
| خروج توسعهدهنده | اثر کم؛ جایگزین در دسترس | ریسک بالا؛ مستندسازی گران |
دقت کنید ستون افزونه هم رایگان نیست: لایسنس سالانه، پیکربندی و پشتیبانی هزینه دارد، اما بار نگهداری روی سازندهٔ افزونه است نه روی شما. تفاوت اصلی همین انتقال بار است؛ کد سفارشی یعنی همهٔ تیکتهای آینده مال خودتان است، از رفع خطا تا سازگاری با نسخهٔ جدید PHP.
روش محاسبه را ساده نگه دارید: هزینهٔ ساخت را یکجا بنویسید، نگهداری را در ۶۰ ماه ضرب کنید و برای هر بهروزرسانی بزرگ هسته، یک سطر تست اضافه کنید. اگر توسعهدهنده یا تیم ثالثی را جایگزین فرض میکنید، هزینهٔ مستندسازی و انتقال دانش را هم در همان ستون بگذارید. قاعدهٔ سرانگشتی ما: هر تومان ساخت، حداکثر همارزش دو تومان نگهداری پنجساله است؛ اگر این نسبت برعکس شد، پروژه را بازتعریف کنید.
بدهی امنیتی: کد خودتان هم میشود نقطهٔ ورود
استدلال رایج «افزونه ناامن است، کد خودمان امنتر» نصفه است. طبق گزارش Patchstack، بیش از ۹۰ درصد آسیبپذیریهای ثبتشدهٔ اکوسیستم وردپرس در سال ۲۰۲۳ مربوط به افزونهها بود (تاریخ گردآوری: آبان ۱۴۰۵)؛ این عدد سطح حملهٔ بزرگ افزونهها را نشان میدهد، اما کد اختصاصی هم زمانی آسیبپذیر میشود که کسی آن را بهموقع بهروزرسانی و تست نکند. تفاوت در پشتیبانی است: افزونهٔ شناختهشده زیر نظر هزاران سایت و تیم امنیتی است؛ کد شما فقط زیر نظر خودتان و وابسته به همان نفری که نوشته؛ وقتی او در دسترس نباشد، حتی رفع یک خطا هفتهها طول میکشد. لایههای امنیت و پشتیبانگیری سوئیت همین بدهی را روی افزونهٔ اتصال وردپرس نسخهٔ ۱٫۶٫۴ با ۳۰ گیت امنیتی مهار میکند.
برای کاهش بدهی از روز اول، سه لایه کافی است: پشتیبانگیری خودکار روزانه با بازگردانی آزمودهشده، پایش دسترسی و لاگ تغییرات کد، و بازبینی فصلی امنیت با یک چکلیست ثابت. زمانبندی هم روشن باشد: بهروزرسانی هسته در بازهٔ حداکثر دو هفته پس از انتشار نسخهٔ پایدار، و تست کامل پس از هر ارتقای افزونههای وابسته. هیچکدام گران نیستند؛ گران است بازسازی پروژهای که هیچکس سندش را ندارد.
نشانههای بدهی امنیتی را جدی بگیرید و پیش از تصویب هر پروژهٔ سفارشی سه شرط را در قرارداد بگذارید: تحویل مستندات فنی، تست خودکار پایه و حق تعمیر توسط تیم ثالث. 
لبههای RTL و فارسی که بودجهٔ کد سفارشی را بالا میبرد
در پروژههای فارسی، «کار میکند» و «فارسی درست کار میکند» دو قیمت دارند. لبههای تکراری اینهاست: جستجوی داخلی که نیمفاصله را نشناسد و «لپ تاپ» را با «لپتاپ» یکی نکند؛ فرمهایی که ارقام فارسی را نامعتبر قبول نمیکنند؛ تقویم میلادی بهجای شمسی در گزارشها؛ جدولها و نمودارهایی که در چیدمان راستبهچپ برعکس میشوند؛ متنهای کوتاهشده که در وسط کلمهٔ فارسی میبرند؛ فرمهای چندمرحلهای که جهت را در مرحلهٔ دوم گم میکنند؛ و خروجی فاکتور با تراز بهمریخته.
هر لبه یک تیکت نگهداری مادامالعمر است. اگر کد سفارشی میزنید، این موارد را از ابتدا در دامنهٔ کار و قیمت بگنجانید، نه بهعنوان «بقیهٔ جزئیات» بعد از تحویل. افزونههای باکیفیت فارسی این لبهها را معمولاً حل کردهاند و همین، بخش بزرگی از قیمت لایسنس را توجیه میکند. به تجربهٔ ما بیشترین هزینههای خارج از برآورد در همین لبههای RTL رخ میدهد؛ چون در جلسهٔ قیمتگذاری دیده نمیشوند و در اجرا ظاهر میشوند.
پیش از تحویل، چکلیست فارسی اجرا کنید: تایپ یک عبارت با نیمفاصله در جستجوی داخلی، ثبت فرم با ارقام فارسی، نمایش تاریخ شمسی در همهٔ گزارشها، بازکردن جدولها در موبایل راستبهچپ و چاپ یک نمونهٔ فاکتور. پنج دقیقه آزمون، ساعتها تیکت بعدی را حذف میکند. اگر یکی از این موارد شکست خورد، تحویل را نپذیرید؛ اصلاح بعد از پرداخت، هزینهٔ دوباره دارد.
جدول سر-به-سر: افزونهٔ آماده در برابر کد سفارشی
با پنج معیار، دو گزینه را کنار هم بگذارید؛ اعداد، ترکیبی از بازههای جدول TCO و ملاحظات اجرایی است.
| معیار | افزونهٔ آمادهٔ باکیفیت | کد سفارشی |
|---|---|---|
| زمان تا انتشار | روزها | هفتهها تا ماهها |
| هزینهٔ شروع | پایین | بالا |
| هزینهٔ پنجساله | قابل پیشبینی | متغیر و رو به رشد |
| ریسک امنیتی | سطح حملهٔ بزرگتر؛ پشتیبانی سریع | سطح حملهٔ کوچکتر؛ پشتیبانی فقط شما |
| وابستگی به فرد | کم | بالا |
| انعطاف برای مزیت رقابتی | محدود | کامل |
اگر روی سرعت هم حساسید، یادآوری کنید که کندی سایت بیشتر از نبود کد اختصاصی، از انباشت افزونه و کشِ پیکربندینشده میآید؛ پیش از هر بازنویسی، راهنمای سرعت و کارایی وردپرس را مرور کنید تا هزینهٔ قبلی روی مشکل درست خرج شود. عدد پنهان، سطر وابستگی است: وقتی فرد یکنفره میرود، افزونه با تیم پشتیبانی میماند و کد سفارشی با شکاف خالی. این سطر را در مذاکره قیمت نگذارید؛ در قرارداد بنویسید.
کد سفارشی وردپرس برای چه کسی میارزد؟
سه سناریوی روشن. کد سفارشی برای کسبوکاری منطقی است که فرایند اختصاصی و درآمدزای خود را قالب میزند — سامانهٔ رزرو نوبت با قیمتگذاری خاص، موتور مقایسهٔ محصول اختصاصی یا داشبورد مشتری — و تیم فنی یا قرارداد نگهداری پایدار دارد؛ در چنین کارهایی، افزونهٔ آماده یا جواب نمیدهد یا با تنظیمهای بیپایان و هزینهٔ مشاوره، به قیمت سفارشی میرسد. افزونهٔ باکیفیت برای کارکردهای استاندارد جواب میدهد: فرم، کش، سئو و فروشگاهسازی معمول. حذف و جایگزینی برای سایتهایی درست است که مشکلشان انباشت است، نه نبود قابلیت.
برعکس، کد سفارشی برای سه حالت توصیه نمیشود: بودجهای که فقط ساخت را پوشش میدهد و نگهداری را نه؛ تیمی که همهٔ دانش فنیاش نزد یک نفر است؛ و قابلیتی که فردا ممکن است با یک افزونهٔ بهتر حل شود. به تجربهٔ ما هزینهٔ پنجسالهٔ نگهداری معمولاً از هزینهٔ ساخت جلو میزند؛ چون هر بهروزرسانی هسته، تست دوباره میخواهد. این قاعده استثنا ندارد؛ فقط بزرگی عدد فرق میکند.
تست نهایی هم ساده است: قابلیت را با درآمد مستقیم ربط دهید. اگر سرویسی که با کد سفارشی ساخته میشود، مسیر فروش یا صرفهجویی مشخص و اندازهگیریپذیری دارد، سمت سفارشی بروید؛ اگر فقط «بهتر دیده شود» است، افزونه و پیکربندی کافی است.
مسیر میانه: اول ممیزی، بعد تصمیم
پیش از هر قرارداد، ممیزی افزونهها را اجرا کنید: فهرست افزونههای فعال، همپوشانیها، بار هر اسکریپت و افزونههای بیاستفاده. در همان فروشگاه ۴۰۰ محصولی، حذف ۹ افزونهٔ همپوشان، کارایی را بدون یک خط کدنویسی تازه بهتر کرد. خروجی ممیزی را در قالب سه ستون بگیرید: افزونه، وضعیت (حذف یا جایگزین یا نگه)، دلیل؛ همین برگه، پیوست قرارداد بعدیتان میشود. ممیزی، افزونههای بیاستفاده و تکراری را هم نام میبرد؛ حذف آنها اولین صرفهٔ رایگان است و اغلب بدون هزینه اجرا میشود. همین برگهٔ سهستونی، ورودی مستقیم محاسبهٔ TCO است؛ تصمیمی که روی دادهٔ خودتان بنا شود، با جلسهها فرق دارد.
چرخهٔ سوئیت همین ترتیب را میسازد: ممیزی کامل، فرصتهای شمارهدار، تولید و انتشار با خط کیفیت و گزارش هفتگی قابل راستیآزمایی در پرتال مشتری فارسی. پلن بینش — ۲٫۹ میلیون تومان/ماه (ممیزی + ۱۰ محتوای سئو) برای ادامهٔ منظم طراحی شده و ضمانت بازگشت وجه ۷ روزهٔ بیقیدوشرط دارد. اعتراف روشن: بازههای تومانی این مقاله از پروژههای خودمان است و نرخ تیم و کیفیت کد پایه میتواند آنها را جابهجا کند؛ برای عدد دقیق، ممیزی دامنهٔ خودتان را مبنا بگذارید.
خلاصهٔ اقدام: سه پرسش چارچوب را بنویسید، TCO پنجساله را با جدول همین مقاله حساب کنید، لبههای RTL را در دامنهٔ کار بگنجانید و پیش از هر کدنویسی، حذف افزونههای همپوشان را آزمایش کنید. اگر مزیت رقابتی واقعی دارید و تیم نگهداری، کد سفارشی سرمایه است؛ در غیر این صورت افزونهٔ باکیفیت تصمیم اقتصادیتری است. تصمیم بعدی را با عدد دامنهٔ خودتان بگیرید، نه با جو جلسه؛ همین تفاوت، بین یک سرمایهگذاری درست و یک هزینهٔ ماندگار مرز میکشد.
یادآوری: این تحلیل عمومی است و مشاورهٔ مالی نیست؛ اعداد تعرفهها بهعلاوهٔ مالیات بر ارزش افزوده است و ممکن است بهروزرسانی شود.
رصد ما، رشد شما.
سؤالات پرتکرار
کد سفارشی سریعتر از افزونه است؟
معمولاً بله، اگر درست نوشته و تست شود؛ اما افزونهٔ سنگینِ پیکربندینشده معمولاً مقصر اصلی است. اول کش و حذف افزونههای همپوشان را درست کنید، بعد سراغ بازنویسی بروید.
هزینهٔ نگهداری کد سفارشی چقدر است؟
به تجربهٔ ما ماهانه ۵ تا ۲۰ میلیون تومان برای یک قابلیت متوسط، بهاضافهٔ تست پس از هر بهروزرسانی هسته. نرخ تیم و پیچیدگی کد پایه، این بازه را جابهجا میکند.
چه زمانی افزونهٔ آماده کافی است؟
برای کارکردهای استاندارد مثل فرم، کش، سئو و فروشگاهسازی معمول. اگر قابلیت، مزیت رقابتی مستقیم شما نیست، لایسنس افزونهٔ باکیفیت اقتصادیتر از ساخت است.
ریسک امنیتی کد سفارشی بیشتر است یا افزونه؟
افزونهها سطح حملهٔ بزرگتری دارند، چون روی میلیونها سایت نصب است؛ طبق گزارش Patchstack بیش از ۹۰ درصد آسیبپذیریهای وردپرس در افزونهها ثبت میشود. کد سفارشی ریسک دیگری دارد: بینگهداری و نبود تست پس از آپدیت.
از کجا شروع کنم؟
با ممیزی افزونهها: فهرست افزونههای فعال، همپوشانیها و بار اسکریپتها. بعد از حذف موارد تکراری، با جدول TCO تصمیم بگیرید؛ در خیلی از سایتها همین مرحله جواب را میدهد.