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

اول بدانید چه چیزی واقعاً باید منتقل شود
افزونه ممکن است داده را در جدول اختصاصی، تنظیمات وردپرس، متادادهٔ نوشته و سفارش، فایلهای بارگذاریشده یا سرویس بیرونی نگه دارد. فهرست خروجی باید برای هر نوع داده، مالک، محل ذخیره، حجم تقریبی، وابستگی و تکلیف آن پس از مهاجرت را مشخص کند. مستندات وردپرس نشان میدهند افزونهها میتوانند جدول اختصاصی بسازند و هنگام حذف نیز دادهٔ خود را پاک کنند؛ بنابراین رفتار حذف افزونهٔ مشخص را پیش از هر اقدامی بررسی کنید.
همهٔ دادهها ارزش انتقال یکسان ندارند. سفارش و سند تاریخی ممکن است برای پیگیری لازم باشند، در حالی که کش یا گزارش موقت را میتوان دوباره ساخت. تصمیم نگهداری یا حذف داده باید با صاحب فرایند و الزامات آن پروژه ثبت شود.
مدل مقصد و نگاشت را پیش از نوشتن مهاجر تعیین کنید
برای هر فیلد مبدأ، مقصد، تبدیل لازم و رفتار مقدار نامعتبر را بنویسید. شناسههای قدیمی را در یک جدول نگاشت یا ردپای قابل پیگیری حفظ کنید تا بتوان یک سفارش، مشتری یا سند را در دو سیستم پیدا کرد. رابطهها را هم بررسی کنید: تعداد ردیف یکسان بهتنهایی ثابت نمیکند که قلمهای سفارش به سفارش درست وصل شدهاند.
اگر افزونه با سفارش ووکامرس کار میکند، روش دسترسی به سفارش را جدا بررسی کنید. در HPOS، تکیه بر نوشتن مستقیم در جدول نوشتهها میتواند دادهٔ سفارش را ناهماهنگ کند؛ مستندات WooCommerce برای بررسی و همگامسازی HPOS ابزارهای جداگانه دارد. این موضوع بخشی از آزمون سازگاری افزونه با HPOS است، نه نشانهٔ آنکه همهٔ دادههای افزونه با یک فرمان منتقل میشوند.
آزمون مهاجرت را با اختلافهای واقعی بسنجید
- از فایلها و پایگاه داده نسخهٔ پشتیبان بگیرید و بازیابی آن را در محیط آزمایشی امتحان کنید.
- یک کپی نزدیک به وضعیت تولید بسازید؛ دادهٔ شخصی را برای دسترسیهای غیرضروری حذف یا پوشانده نگه دارید.
- تبدیل را روی نمونهٔ کوچک و سپس کل داده اجرا کنید. اجرای دوباره نباید رکورد تکراری یا تغییر ناخواسته بسازد.
- شمار رکوردها، رابطهها و جمعهای مهم کسبوکار را مقایسه کنید. برای انبار، ماندهٔ هر کالا و انبار؛ برای سفارش، اقلام، وضعیت و مبالغ مرتبط را کنترل کنید.
- استثناها را با شناسه و علت ثبت کنید؛ «موفقیت اجرای اسکریپت» جای فهرست اختلافها را نمیگیرد.
برای نمونهٔ فرضی، اگر از ۱۰۰ سند قدیمی ۹۹ سند به مقصد رسید، مهاجرت تا تعیین تکلیف سند جاافتاده پذیرفته نیست؛ حتی اگر صفحهٔ اصلی افزونه تازه درست به نظر برسد. معیار پذیرش را متناسب با داده و فرایند همان پروژه بنویسید.
انتشار: تغییرهای جدید مبدأ را جا نگذارید
اگر فروشگاه هنگام مهاجرت فعال بماند، دادههایی که بعد از کپی اولیه ایجاد میشوند نیز باید به مقصد برسند. راهکار ممکن است اجرای افزایشی، بازهٔ توقف نوشتن یا ثبت رویدادهای بین دو اجرا باشد. زمان دقیق تغییر مرجع، مسئول تأیید نهایی و وضعیت افزونه قدیمی را پیش از انتشار مشخص کنید. دو مسیر نوشتن همزمان بدون قاعدهٔ حل تعارض میتواند تاریخچه را مبهم کند.
برنامهٔ بازگشت فقط نصب دوبارهٔ فایل افزونه قدیمی نیست. باید بدانید پس از تغییر مرجع چه دادهٔ تازهای تولید میشود، چگونه حفظ میشود و چه کسی تصمیم بازگشت را میگیرد. نسخهٔ پشتیبانِ آزموننشده نیز برای روز انتشار تکیهگاه قابل اتکایی نیست.
چه زمانی میتوان افزونه قدیمی را حذف کرد؟
پس از تأیید داده، سناریوهای کاری و دورهٔ پایش توافقشده، وابستگیهای باقیمانده را بررسی کنید. حذف یک افزونه در وردپرس میتواند با پاکسازی دائمی تنظیمات یا جدولهای آن همراه باشد؛ پیش از حذف، مستندات و کد uninstall همان افزونه و نیاز قانونی یا عملی به تاریخچه را کنترل کنید. تا پیش از این مرحله، غیرفعالکردن کنترلشده میتواند گزینهٔ قابل بررسی باشد، اما رفتار دقیق هر افزونه فرق دارد.
یک تجربهٔ مرتبط و مرز آن
در مطالعهٔ موردی مهاجرت سامانهٔ انبار وردپرس، دادههای تاریخی بهصورت افزایشی و قابل تکرار منتقل و ماندهها و شمار اسناد کنترل شدند؛ مسیر بازگشت نیز برای زمان انتشار در نظر گرفته شد. این نمونه روش کنترل صحت را نشان میدهد، اما زمان، حجم کار و معماری پروژهٔ دیگر از آن قابل تعمیم نیست.
پرسشهایی که برای برآورد باید آماده کنید
- نام و نسخهٔ افزونهٔ قدیمی و دلیل جایگزینی چیست؟
- چه دادهٔ تاریخی، تنظیمات و فایلهایی باید قابل استفاده بمانند؟
- چه سیستمهای دیگری از این داده میخوانند یا در آن مینویسند؟
- فروشگاه در زمان مهاجرت چه میزان تغییر داده خواهد داشت؟
- کدام گزارش اختلاف و کدام سناریوی کاری، تحویل را تأیید میکند؟
- حد قابل قبول توقف و تصمیمگیرندهٔ بازگشت چه کسی است؟
این پاسخها را میتوان در شرح نیاز پروژهٔ افزونه ثبت کرد. برای بررسی دامنهٔ توسعه و تحویل نیز خدمت ساخت افزونه اختصاصی را ببینید.