آموزش گامبهگام آپدیت هسته و افزونههای وردپرس
دکمهٔ «همه را بهروزرسانی کن» در پیشخوان، دو مخاطب متفاوت دارد: برای سایت آزمایشیِ بدون ترافیک، تقریباً بیخطر است؛ برای فروشگاه یا کلینیک زنده، یکی از پرریسکترین کلیکهای ماه. این راهنما همان فاصله را پر میکند: آیین هفتقدمیای که آپدیت را از «شانس» به «فرایند تکرارشدنی» تبدیل میکند — با نقشهٔ بازگشت برای لحظهای که همهچیز طبق برنامه پیش نمیرود.
آپدیت وردپرس چرا باید یک آیین باشد، نه یک کلیک؟
چرا اینقدر سختگیریم؟ چون آپدیت وردپرس سه زنجیره را همزمان دست میزند: هسته، افزونهها و قالب — سه لایهای که باید با هم سازگار بمانند. هر نسخهٔ تازه، باگهای امنیتی نسخهٔ قبلی را میبندد؛ همین یعنی بهروزماندن، خودش بخشی از امنیت است، نه کار لوکس. اما نسخهٔ تازه میتواند با افزونهٔ قدیمی یا قالب دستکاریشده ناسازگار بیفتد و همین ناسازگاری، صفحهٔ سفید، فرم خراب یا پرداخت قطعشده میسازد.
ریسک در سایت زنده دو برابر است چون هر دقیقه خطا، ترافیک و اعتماد و سبد خرید همزمان میسوزد. پس قانون اول ما ساده است: هیچ آپدیتی مستقیم روی سایت زنده شروع نمیشود؛ همهچیز از بکاپ و محیط آزمایشی شروع میشود و با پایش تمام میشود. هفت قدم بعدی، همین قانون را به مراحل اجرایی خرد میکند.
یکی دیگر هم بدانید تا انتظارتان واقعی بماند: همهٔ آپدیتها هموزن نیستند. نسخههای خرد هسته معمولاً وصلهٔ امنیتی و باگاند و ریسک کمتری دارند؛ نسخههای بزرگ هسته و افزونههای حیاتی، تغییر رفتاری بیشتری میآورند و تست کامل میخواهند. به تجربهٔ ما بیشتر خرابیهای معروف، نه از آپدیتهای بزرگ، بلکه از تفاوت ظریفِ یک افزونهٔ حیاتی شروع شدهاند؛ پس اندازهٔ آیین را با اندازهٔ آپدیت تنظیم کنید، نه با عجلهٔ تقویم.
قدمهای صفر تا دو؛ بکاپ، محیط آزمایشی، ثبت وضعیت

قدم صفر، بکاپ کامل است: فایلها و پایگاهداده، با آزمایش بازیابی — بکاپی که ریستور نشده، بکاپ نیست؛ پندار بکاپ است. ریتم منظم و محل نگهداری دور از سرور، آموزش بکاپ منظم وردپرس را ببینید که دقیقاً همین را میچیند. قدم اول، محیط آزمایشی است: کپی سایت در پیشمحیط یا زیردامنهٔ آزمایشی که همان نسخهٔ PHP، همان افزونهها و دادههای مشابه تولید را داشته باشد؛ محیط آزمایشیِ با دیتای ساختگیِ خالی، نتایج امیدوارکنندهای میسازد که در تولید صادق نمیشوند.
قدم دوم، ثبت وضعیت فعلی است: نسخهٔ هسته، نسخهٔ تکتک افزونهها و قالب، لاگ خطاهای موجود و یک اسکرینشات از صفحات کلیدی. این برگه دو کار میکند: اگر بعد از آپدیت چیزی عوض شد، میدانید «عوض» یعنی چه؛ و اگر برگشت به عقب لازم شد، میدانید به کدام نسخهها برمیگردید. تیمهایی که این قدم را حذف میکنند، بعداً نمیتوانند بگویند مشکل از آپدیت بوده یا از قبل بود.
دربارهٔ محیط آزمایشی یک سؤال پرتکرار است: کجا بسازیم؟ گزینهها از ارزان به کامل: زیرپوشهٔ آزمایشی روی همان هاست (سریع ولی همریسک با سرور اصلی)، زیردامنهٔ جدا (خوب برای تست فنی) و کپی کامل روی هاست دوم (دقیقترین شبیهسازی). هرچه فروشگاه یا کلینیک شما حساستر است، شبیهسازی را جدیتر بگیرید؛ آزمایشکردنِ روی چیزی که به تولید شبیه نیست، شبیهسازی نیست، تئاتر است.
قدمهای سه تا پنج؛ ترتیب درست آپدیت افزونهها و هسته
قدم سوم، ترتیب است. به تجربهٔ ما ترتیب کمریسک این است: اول افزونههای سبک و کمتماس با قالب، بعد افزونههای حیاتی — فرم، فروشگاه، کش، امنیت — یکییکی و با تست کوتاه بین هرکدام، و در پایان هسته و قالب. منطقش ساده است: اگر بعد از آپدیت هسته چیزی شکست، نمیدانید مشکل از هسته است یا از ترکیب؛ اما اگر افزونهها اول تثبیت شده باشند، هر خطای بعدی مظنون مشخصی دارد.
قدم چهارم، خواندن یادداشت انتشار است: changelog هر افزونهٔ حیاتی چند خط است و معمولاً همان چند خط میگوید این نسخه با کدام نسخهٔ وردپرس سازگار است یا تغییر رفتاری داشته. قدم پنجم، رد کردن آپدیتهای مشکوک: افزونهای که شش ماه بدون پشتیبانی مانده یا در محیط آزمایشی خطای تازه داده، از فهرست این دور خارج میشود تا در محیط ایزوله جداگانه بررسی شود. آپدیتِ درست شامل «همه» نیست؛ شامل «همهٔ مواردی که تست را رد کردند» است.
یک صافی انتخابی هم قبل از ترتیب بگذارید: افزونهای که این روزها بهروزرسانی نمیشود، پشتیبانیاش خاموش است یا یادداشت انتشارش مبهم است، کاندیدای آپدیت نیست؛ کاندیدای بازطراحی است. جایگزینی افزونهٔ متروکه با گزینهٔ فعال، گاهی بیش از ده دور آپدیت، ریسک سایت را کم میکند — و همین صافی است که فهرست آپدیت را از «همه» به «ارزش اجرا» میرساند.
قدم شش؛ تست دود بعد از آپدیت

قدم شش، تست دود است: مجموعهای از چکهای سریع که مطمئن میشوند کارهای حیاتی هنوز کار میکنند. این تست را بعد از هر آپدیتِ حیاتی و بعد از آپدیت هسته اجرا کنید؛ ده دقیقه در محیط آزمایشی، ساعتها درمان در تولید را میخرد. چکها را از مسیر واقعی مشتری بردارید، نه از مسیر فنی سایت: ورود، ثبتنام، فرم تماس، سبد و پرداخت، جستجوی داخلی، بارگذاری تصویر، ارسال ایمیل سیستمی و لاگ خطاها. برای فروشگاه، یک خرید واقعی تستی با درگاه آزمایشی؛ برای کلینیک، یک نوبتدهی کامل تا پیام تأیید — مسیر پول و مسیر رضایت، همان دو مسیریاند که شکستشان گرانترین است.
دو نکتهٔ اجرایی: تست دود را یکنفره نکنید — چشم دوم خطاهای آشنا را نمیبیند؛ و نتایج را کنار برگهٔ وضعیت قدم دوم بنویسید تا «قبلاً هم اینطوری بود» از «از امروز اینطوری شد» جدا شود. اگر محیط آزمایشی تمیز از خطا گذشت، هنوز یک قدم مانده: همان تست کوتاه روی نسخهٔ موبایل، چون قالبها معمولاً اول آنجا لنگ میزنند.
قدم هفت؛ انتشار در تولید و پایش چهلوهشتساعته
قدم هفت، انتشار در تولید و پایش چهلوهشتساعته است. زمان انتشار را در کمترافیکترین ساعت بگذارید — برای بازار ایران، نیمهشب تا صبح زود معمولاً امنترین پنجره است؛ قبل از انتشار، بکاپ تازهٔ لحظهٔ قبل بگیرید (نه بکاپ دیروز) و کش و CDN را بعد از آپدیت پاک کنید تا کاربران نسخهٔ تازه را ببینند و تست شما با کش قدیمی گمراه نشود.
یک خط ارتباط هم قبل از پنجرهٔ انتشار بگذارید: بنر یا پیام کوتاه «نگهداری برنامهریزیشده» در ساعات آپدیت، و اگر سایت خدماتی حساسدارید، اطلاع قبلی به مشتریان فعال. مخابرهشده بودن چند دقیقه اختلال، از خاموشی بیخبر چند برابر قابلتحملتر است؛ اعتماد کاربر به «برنامهدار بودن» شما، خودش بخشی از نگهداری است.
پایش چهلوهشتساعته یعنی چه؟ به تجربهٔ ما اکثر خرابیهای ناشی از آپدیت یا در ساعات اول ظاهر میشوند یا در اولین موج واقعی کاربران؛ پس دو روز، پنجرهٔ مرور خطا، نرخ خطای پرداخت و گزارشهای کاربران را جدی نگه دارید و با دادهٔ سرچکنسول هم نگاه کنید که ایندکس و صفحات کلیدی سر جایشاناند. بعد از چهلوهشت ساعت آرامش، دور آپدیت بسته میشود و برگهٔ وضعیت، آرشیو میشود — تا دور بعد.
اگر چیزی شکست؛ نقشهٔ بازگشت به عقب
اگر در محیط آزمایشی یا — بدتر — در تولید چیزی شکست، نقشهٔ بازگشت از قبل نوشته شده است: اول، دامنهٔ خطا را محدود کنید — افزونهٔ مظنون را غیرفعال کنید (اگر پیشخوان بالا نمیآید، از مدیریت فایل یا رابط خط فرمان هم ممکن است) و ببینید سایت برمیگردد یا نه. دوم، اگر مشکل ترکیبی یا ناشناخته است، ریستور بکاپِ پیش از آپدیت را اجرا کنید؛ آموزش ریستور بکاپ وردپرس همین مسیر را بدون استرس باز کرده است. بازگشت به عقب شکست نیست؛ تصمیمِ درستِ لحظهٔ بحران است.
سوم، بعد از آرامشدن، علت را بنویسید: کدام نسخه، کدام تداخل، کدام افزونه — و این یادداشت را به برگهٔ وضعیت بچسبانید تا دور بعد تکرار نشود. و مرز قرمز: اگر نشانهها به نفوذ یا کدنویسی ناشناس رسید — فایل ناشناس، کاربر بیسابقه، ریدایرکت اسپم — دیگر بحث آپدیت نیست؛ مسیر آموزش بازیابی سایت هکشده از قرنطینه تا بازگشت امن، همانجایی است که باید بروید. در آن حالت، برگهٔ وضعیت همان چیزی است که به تیم امنیت میدهید؛ از امروز هم ثبتش کنید، برای همان روز.
ریتم نگهداری ماهانه و جمعبندی
آیین هفتقدمی فقط وقتی میارزد که ریتم شود. پیشنهاد ما: یک پنجرهٔ ماهانهٔ ثابت برای آپدیتهای معمولی؛ بهروزرسانیهای امنیتی کوچک و وصلههای بحرانی را بیتعویل و طبق همان آیین، حتی خارج از پنجره، اجرا کنید — امنیت منتظر تقویم نمیماند. برای سیاست بهروزرسانی خودکار، نسخههای خرد هسته را معمولاً خودکار نگه دارید و بهروزرسانی بزرگ و افزونهها را دستی و آییندار؛ خطای خودکارِ بیتست، همان کلیکِ بیفکر است که فقط دیرتر میرسد.
آیین را مکتوب کنید تا با افراد نرود: یک برگهٔ دوصفحهای که ترتیب، چکهای تست دود، ساعت پنجرهٔ انتشار و محل بکاپها در آن ثابت است. تیمهای دومنفره و کانترکتورهای جدید، همین برگه را بهجای حافظهٔ قبلیها اجرا میکنند؛ و هر دور آپدیت، یک خط به انتهایش اضافه میشود — تجربهای که در پرونده بماند، آموزشِ دور بعد است.
جمعبندی: بکاپِ تستشده، محیط آزمایشی، ترتیب افزونهها قبل از هسته، تست دود، انتشار کمترافیک و پایش چهلوهشتساعته — شش تا هفت قدمی که آپدیت وردپرس را از ریسک به روال تبدیل میکند. اگر میخواهید همین انضباط با انتشار خودکار و اپراتور انسانی پشتیبانی شود، صفحهٔ امنیت و زیرساخت سوئیت جزئیاتش را نشان میدهد و پلن پیشرو با ۷٫۹ میلیون تومان در ماه همین سطح اجرا را میدهد؛ قابلیتهای پلتفرم هم تصویر کاملتری از خط انتشار میدهد.
رصد ما، رشد شما.
سؤالات پرتکرار
اول هسته را آپدیت کنیم یا اول افزونهها؟
به تجربهٔ ما اول افزونههای سبک، بعد افزونههای حیاتی یکییکی با تست، و در پایان هسته و قالب؛ با این ترتیب هر خطا مظنون مشخصی دارد. وصلههای امنیتی کوچک هسته را بیتعویل اجرا کنید.
بهروزرسانی خودکار را روشن کنیم؟
برای نسخههای خرد هسته معمولاً بله؛ برای بهروزرسانی بزرگ و افزونهها نه — آنها را با آیین بکاپ، محیط آزمایشی و تست دود دستی اجرا کنید.
قبل از هر آپدیت حتماً بکاپ بگیریم؟
بله؛ بکاپ کامل فایل و پایگاهداده، ترجیحاً با آزمایش بازیابی. بکاپی که ریستور نشده باشد، در لحظهٔ بحران فقط پندار امنیت است.
سایت بالا آمد ولی فرمها یا پرداخت کار نمیکند؛ چه کنیم؟
اول افزونهٔ مظنون را غیرفعال کنید؛ اگر مشکل حل نشد، ریستور بکاپ پیش از آپدیت را اجرا کنید و بعد از آرامشدن، علت تداخل را مکتوب کنید تا دور بعد تکرار نشود.