اولین پروژه مهاجرت از Joomla به WordPress که رویش کار کردم، سایت یک مجله تخصصی با هشت سال محتوا بود. کارفرما می‌خواست منتقل شود چون هر ماه پیدا کردن افزونه سازگار سخت‌تر می‌شد و تیم تحریریه با ویرایشگر Joomla کشتی می‌گرفت. آن پروژه سه هفته طول کشید و در همان مدت یاد گرفتم که مهاجرت از Joomla به WordPress یک کار کپی-پیست نیست؛ یک ترجمه معماری است. Joomla و وردپرس، ساختار داده‌ای، منطق دسته‌بندی و حتی مفهوم کاربر را متفاوت تعریف می‌کنند و باید این تفاوت‌ها را شناخت تا انتقال بی‌خرابی باشد. این مقاله، همان ترجمه معماری را از نگاه عملی باز می‌کند.

چرا سایت‌ها از Joomla به WordPress منتقل می‌شوند؟

Joomla در دهه گذشته یکی از سه CMS محبوب جهان بود و در بازار ایران هم طرفداران جدی داشت؛ به‌ویژه در سایت‌های سازمانی و پورتال‌های خبری. اما در سال‌های اخیر، دو عامل جریان مهاجرت را از Joomla به WordPress تشدید کرده است. عامل اول، شکاف اکوسیستم است؛ تعداد افزونه‌ها، قالب‌ها و منابع آموزشی WordPress با فاصله قابل توجهی بیشتر از Joomla است. عامل دوم، شکاف نیروی متخصص است؛ پیدا کردن توسعه‌دهنده Joomla روزبه‌روز سخت‌تر می‌شود و نگهداری سایت به یک ریسک عملیاتی تبدیل می‌شود.

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

مهاجرت بین دو CMS، ترجمه معماری است، نه انتقال فایل. اگر این تفاوت را درک نکنید، در همان لایه اول گیر می‌کنید.

سه سناریوی متفاوت این نوع انتقال

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

سناریو اول: مهاجرت کامل با حفظ تمام محتوا

در این سناریو، همه محتوای Joomla (مقالات، دسته‌بندی‌ها، کاربران، نظرات) به WordPress منتقل می‌شود. این رایج‌ترین حالت است و برای سایت‌های محتوایی، خبری و آموزشی مناسب است. مسئله اصلی، حفظ ساختار URL و انتقال کاربران بدون از دست رفتن رمز عبورشان است. راه‌حل اصولی این سناریو، استفاده از ابزارهای تخصصی مهاجرت است که ساختار Joomla را می‌شناسند و آن را به ساختار WordPress ترجمه می‌کنند.

سناریو دوم: مهاجرت گزینشی (فقط بخشی از محتوا)

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

سناریو سوم: بازسازی از صفر با الهام از محتوای Joomla

در پروژه‌هایی که ساختار محتوایی Joomla کاملاً به‌هم‌ریخته است، تصمیم می‌گیریم سایت را از صفر روی WordPress بسازیم و محتوای ارزشمند را به‌صورت دستی یا نیمه‌خودکار منتقل کنیم. این سناریو، زمان‌برتر است اما نتیجه نهایی، ساختاری تمیزتر دارد. اگر این مسیر را انتخاب می‌کنید، حتماً ساختار حرفه‌ای URL و سئو را پیش از شروع بخوانید تا تصمیم‌های ساختاری، درست از همان ابتدا گرفته شوند.

گام صفر: آماده‌سازی و بکاپ

در هیچ مهاجرتی بدون یک ساعت آماده‌سازی شروع نمی‌کنم. سه گام این ساعت، در مهاجرت Joomla به WordPress اهمیت مضاعف دارد.

بکاپ کامل از Joomla

بکاپ Joomla شامل دو بخش است: فایل‌های سرور (از جمله پوشه images و administrator) و دیتابیس MySQL. بکاپ را در جایی خارج از هاست Joomla نگه دارید. اگر با روش‌های بکاپ آشنا نیستید، پشتیبان‌گیری از سایت چیست و چرا ضروری است مفاهیم پایه را توضیح می‌دهد و چگونه از وردپرس بکاپ بگیریم (با تعمیم به Joomla) روش‌های عملی را پوشش می‌دهد. یک نکته اختصاصی Joomla: در نسخه‌های قدیمی‌تر، جداول با پیشوند jos_ شروع می‌شوند، در حالی که در نسخه‌های جدیدتر ممکن است پیشوند سفارشی باشد. قبل از بکاپ، پیشوند جداول را از فایل configuration.php پیدا کنید.

آماده‌سازی WordPress مقصد

یک نصب تازه WordPress روی هاست مقصد بسازید. هاست مناسب برای سایت مقصد، باید متناسب با حجم و ترافیک سایت باشد؛ اگر انتخاب هاست هنوز باز است، هاست چیست و چگونه انتخاب کنیم معیارهای دقیق را پوشش می‌دهد. پیش از مهاجرت، نسخه PHP و MySQL مقصد را با مبدأ مقایسه کنید. اگر Joomla روی PHP 7.4 بود و WordPress روی PHP 8.2، بخشی از افزونه‌ها ممکن است رفتار متفاوتی داشته باشند.

برنامه بازگشت و نقشه ریسک

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

نقشه‌برداری ساختار محتوا در Joomla

مهم‌ترین گام مهاجرت، نقشه‌برداری است. باید دقیقاً بدانیم ساختار Joomla چگونه است و قرار است به کدام بخش WordPress ترجمه شود. این نقشه، هفته‌های بعد را نجات می‌دهد.

مفهوم Article، Category و Section در Joomla

در Joomla، محتوا در سه لایه ذخیره می‌شود: Article (نوشته)، Category (دسته) و Section (بخش). در نسخه‌های قدیمی Joomla (1.5 و اوایل 2.5)، ساختار سه‌سطحی بود. در نسخه‌های جدیدتر، Section حذف شده و دسته‌بندی دو سطحی شده است. نقشه ترجمه این ساختار به WordPress: Article به Post، Category به Category یا Parent Category، و Section اگر وجود داشته باشد، به دسته والد ترجمه می‌شود.

این تصمیم نقشه‌برداری، روی ساختار سئوی سایت اثر مستقیم دارد. اگر دسته‌بندی Joomla در هم تنیده است، فرصت خوبی است که در WordPress ساختار تمیزتری بسازید. اصول ساختار درست را در سئو داخلی چیست و چه تاثیری دارد آورده‌ام. نکته مهم دیگر: در Joomla، نوع محتوای سفارشی هم وجود دارد که شبیه Custom Post Type در WordPress است. این‌ها هم باید در نقشه ترجمه مشخص شوند.

نقشه کاربران و سطوح دسترسی

Joomla چند سطح دسترسی دارد: Public، Registered، Special، Super Users. WordPress هم چند نقش دارد: Subscriber، Contributor، Author، Editor، Administrator. نقشه ترجمه پیشنهادی من: Joomla Super Users به WordPress Administrator، Special به Editor، Registered به Subscriber. اگر کاربران با نقش Author یا Contributor داشتید، این‌ها در WordPress معادل مستقیم دارند.

نکته ظریف در مهاجرت کاربران: رمزهای عبور Joomla با الگوریتم متفاوتی از WordPress هش شده‌اند. رمزهای Joomla 2.5 به‌بعد از bcrypt استفاده می‌کنند که با الگوریتم WordPress سازگار نیست. یعنی بعد از مهاجرت، کاربران باید رمز عبور جدید تنظیم کنند یا از مکانیزم Reset Password استفاده کنند. این موضوع را از قبل به کارفرما اطلاع دهید تا در زمان انتقال، حجم تماس‌های پشتیبانی بالا نرود.

نقشه ماژول‌ها و کامپوننت‌ها

Joomla از مفهوم Module (ماژول) و Component (کامپوننت) استفاده می‌کند. ماژول‌ها معادل ویجت‌های WordPress هستند و کامپوننت‌ها معادل افزونه‌های سنگین. اگر با ساختار افزونه‌ها آشنا نیستید، افزونه وردپرس چیست و چگونه انتخاب کنیم تفاوت لایه‌ها را روشن می‌کند. نقشه‌برداری این بخش، برای بازسازی رفتار سایت حیاتی است. مثلاً یک ماژول نمایش آخرین اخبار در Joomla، در WordPress به یک ویجت یا بلوک قابل استفاده مجدد تبدیل می‌شود.

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

ابزارهای مهاجرت و انتخاب درست

سه دسته ابزار برای مهاجرت از Joomla به WordPress وجود دارد که هرکدام محدودیت‌های خودش را دارد.

ابزارهای تخصصی مهاجرت

ابزارهایی مثل FG Joomla to WordPress و CMS2CMS، ساختار Joomla را می‌شناسند و انتقال را نیمه‌خودکار انجام می‌دهند. مزیت اصلی‌شان این است که ساختار دسته‌بندی و Articles را به‌درستی ترجمه می‌کنند و URLها را حفظ می‌کنند. محدودیت اصلی، پشتیبانی از نسخه‌های مختلف Joomla است؛ ابزاری که Joomla 3 را پشتیبانی می‌کند، ممکن است Joomla 4 را نه. پیش از خرید یا استفاده، نسخه دقیق Joomla خود را مشخص کنید.

اسکریپت‌های اختصاصی

برای پروژه‌های بزرگ با ساختار محتوایی خاص، گاهی نوشتن یک اسکریپت اختصاصی بهترین گزینه است. این اسکریپت، جداول Joomla را می‌خواند و به ساختار WordPress می‌نویسد. اگر با WP-CLI و ساختار دیتابیس WordPress آشنا هستید، این روش سریع‌ترین و دقیق‌ترین است. مقاله مهاجرت دیتابیس وردپرس به سرور جدید مفاهیم پایه کار با دیتابیس را پوشش می‌دهد.

روش دستی و ترکیبی

در پروژه‌های کوچک (زیر ۲۰۰ مقاله)، روش دستی می‌تواند انتخاب درستی باشد. با Export از phpMyAdmin و Import به WordPress، محتوا منتقل می‌شود. اما ساختار دسته‌بندی، کاربران و تصاویر نیاز به کار دستی دارد. تجربه‌ام این است که در سایت‌های بزرگ، روش دستی صرفه ندارد اما در سایت‌های کوچک، کنترل دقیق‌تری می‌دهد.

انتقال محتوای اصلی و ساختار دسته‌بندی

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

انتقال Articles به Posts

جدول jos_content در Joomla، محل نگه‌داری Articles است. این جدول باید به جدول wp_posts در WordPress ترجمه شود. ترجمه دقیق، فقط نام ستون‌ها نیست؛ باید منطق ذخیره محتوا (HTML در برابر Markdown، تنظیمات انتشار، نمایش در صفحه اصلی) هم ترجمه شود. یک نکته مهم: Joomla در نسخه‌های قدیمی، محتوای HTML را با فیلتر خاصی ذخیره می‌کند که ممکن است با ویرایشگر بلوک WordPress سازگار نباشد. پس از مهاجرت، بازبینی چند نمونه مقاله ضروری است.

ترجمه دسته‌بندی و ساختار سلسله‌مراتبی

ساختار دسته‌بندی Joomla، در مهاجرت به WordPress باید بازسازی شود. اگر Joomla شما از Section استفاده می‌کرده، در WordPress معادل Section، دسته والد است. مثال: در Joomla، Section با نام اخبار و Category با نام سیاسی و Article تازه‌ترین رویداد. در WordPress، ساختار می‌شود: دسته والد اخبار، زیردسته سیاسی، و نوشته تازه‌ترین رویداد در زیردسته سیاسی. این نگاشت، هم ساختار سئو را حفظ می‌کند و هم در آینده مدیریت سایت را ساده‌تر می‌کند.

تگ‌ها و محتوای متادیتا

Joomla تگ‌ها را از نسخه 3.1 به بعد پشتیبانی می‌کند. اگر سایت شما نسخه قدیمی‌تری داشته، احتمالاً تگ‌ها به‌صورت کاما در فیلد متادیتا نگه‌داری می‌شده. در مهاجرت، این تگ‌ها باید به جدول wp_terms و wp_term_taxonomy منتقل شوند. تجربه‌ام این است که این بخش، یکی از نقاطی است که ابزارهای خودکار ضعیف عمل می‌کنند و بازبینی دستی لازم دارد. اگر با تاکسونومی WordPress آشنا نیستید، در ساختار کد وردپرس، هوک‌ها و توابع تاکسونومی در هوک‌های وردپرس: قلب تپنده توسعه قابل ردیابی است.

کاربران، نویسندگان و دسترسی‌ها

مهاجرت کاربران، همیشه به‌ظاهر ساده است اما در عمل سه چالش دارد.

ترجمه الگوریتم رمز عبور

Joomla 2.5 به بعد از bcrypt استفاده می‌کند که الگوریتم متفاوتی از WordPress است. راه‌حل اول، بازنشانی اجباری رمز در اولین ورود است. راه‌حل دوم، نگه‌داشتن هش Joomla در متادیتای کاربر و اعتبارسنجی آن از طریق یک هوک سفارشی است که پیچیده‌تر است. توصیه من در پروژه‌ها، راه‌حل اول است؛ ساده‌تر و امن‌تر است. تنها اشکال، حجم بالای تماس پشتیبانی در هفته اول است که باید مدیریت شود.

انتقال نقش‌ها و دسترسی‌ها

نقش‌ها در Joomla با WordPress یک به یک نگاشت نمی‌شوند. مثال: Joomla سه سطح دارد: Public، Registered، Special. WordPress پنج نقش دارد که هرکدام دسترسی مشخصی دارند. نکته مهم این است که در WordPress، همه کاربران به‌صورت پیش‌فرض نقش Subscriber می‌گیرند و باید نقش‌های بالاتر را دستی ارتقا دهید. اگر با تنظیمات کاربران و نقش‌ها در WordPress آشنا نیستید، تنظیمات کاربران و نقش‌ها در وردپرس مفاهیم را کامل باز می‌کند.

ایمیل و اطلاعات تماس کاربر

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

تصاویر و کتابخانه رسانه

تصاویر Joomla، معمولاً در پوشه images/ سرور نگه‌داری می‌شوند و مسیر آن‌ها با URL در محتوا ذخیره می‌شود. در مهاجرت به WordPress، این تصاویر باید به پوشه wp-content/uploads/ منتقل شوند و رکوردهای آن‌ها در جدول wp_posts با نوع attachment ثبت شود.

استراتژی انتقال تصاویر

سه استراتژی برای انتقال تصاویر وجود دارد. اول، انتقال فیزیکی فایل‌ها به پوشه uploads و به‌روزرسانی مسیرها در محتوا. دوم، نگه‌داشتن تصاویر در مسیر Joomla با یک ریدایرکت. سوم، دانلود مجدد تصاویر از URL Joomla و آپلود در WordPress. تجربه من، استراتژی اول است که سریع‌تر و پایدارتر است.

بازسازی سایزهای تصویر

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

Alt Text و بهینه‌سازی سئو تصویر

در Joomla، متن Alt تصویر اغلب نادیده گرفته می‌شود. مهاجرت، فرصتی طلایی است که برای همه تصاویر Alt معنادار بنویسید. این تصمیم، هم در سئو و هم در دسترس‌پذیری اثر می‌گذارد. اگر با مفاهیم پایه سئوی تصویر آشنا نیستید، سئوی تصویر چیست و چرا اهمیت دارد راهنمای عملی است.

حفظ URL و ریدایرکت‌های اصولی

حفظ URL در مهاجرت، یکی از حساسترین بخش‌های کار است. هر URLی که تغییر کند بدون ریدایرکت، به یک لینک شکسته تبدیل می‌شود و اعتبار انباشته از دست می‌رود.

ساختار URL در Joomla و WordPress

Joomla به‌صورت پیش‌فرض، URLهایی با پارامتر دارد (مثل index.php?option=com_content&id=123). اگر SEF URLs فعال باشد، URLها به‌صورت خوانا با ساختار دسته‌بندی نمایش داده می‌شوند. WordPress هم ساختار مشابهی دارد اما مدل پیوند یکتای آن متفاوت است. در مهاجرت، باید ساختار URL سایت مقصد به‌گونه‌ای تنظیم شود که همان ساختار Joomla را تولید کند، یا برای همه URLها ریدایرکت ۳۰۱ نوشته شود. مفهوم فنی ریدایرکت ۳۰۱ در وب به‌عنوان HTTP 301 مستند شده است و درک آن برای این مرحله ضروری است.

تولید نقشه ریدایرکت

قبل از مهاجرت، فهرست URLهای سایت Joomla را از sitemap یا ابزار خزش سایت بردارید. سپس فهرست URLهای سایت WordPress جدید را تولید کنید. نقشه ریدایرکت، در واقع جدول تناظر بین این دو فهرست است. ابزارهای مدیریت ریدایرکت در WordPress، مثل افزونه‌های معرفی‌شده در بهترین افزونه‌های ریدایرکت برای وردپرس، امکان مدیریت این نقشه را به‌صورت متمرکز می‌دهند.

پایش لینک‌های شکسته پس از انتشار

پس از مهاجرت، حداقل دو هفته باید لینک‌های شکسته را پایش کنید. ابزارهای آنالیز لینک و گزارش Search Console در این مرحله مفیدند. هر ۴۰۴ که در ساعات اولیه دیده شود، با یک ریدایرکت ساده قابل اصلاح است اما اگر یک ماه بگذرد، ممکن است دیگر پیدا کردنش سخت شود.

در مهاجرت، تغییر URL یک هزینه اجتناب‌ناپذیر نیست؛ یک انتخاب است که با ریدایرکت درست، پیامد آن قابل مدیریت می‌شود.

بازسازی قالب روی معماری جدید

قالب Joomla قابل انتقال به WordPress نیست. باید یک قالب WordPress انتخاب یا ساخته شود که ظاهر و رفتار قالب Joomla را بازسازی کند. سه استراتژی وجود دارد.

استراتژی اول: انتخاب قالب آماده نزدیک

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

استراتژی دوم: بازسازی روی قالب سفارشی

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

استراتژی سوم: استفاده از صفحه‌ساز

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

جایگزینی افزونه‌های Joomla در WordPress

Joomla و WordPress، هر دو اکوسیستم افزونه دارند اما معادل‌های یک‌به‌یک ندارند. مهم‌ترین کامپوننت‌های Joomla که باید معادل‌شان را در WordPress پیدا کنید:

قابلیت در Joomla معادل در WordPress ملاحظه
VirtueMart یا HikaShop (فروشگاه) WooCommerce مهاجرت جداگانه محصولات نیاز دارد
K2 (مدیریت محتوای پیشرفته) پست تایپ سفارشی ساختار K2 باید دستی نگاشت شود
JEvents (تقویم رویداد) افزونه‌های رویداد WordPress ساختار داده متفاوت است
Community Builder (انجمن) افزونه عضویت + bbPress نیاز به تنظیم دو افزونه
JCE Editor Gutenberg یا Classic Editor تجربه کاربری متفاوت است

برای مهاجرت فروشگاه‌ها، مسیر اختصاصی لازم است. اگر فروشگاه شما روی VirtueMart بوده و می‌خواهید به WooCommerce منتقل شوید، مقاله مهاجرت از Shopify به WooCommerce با وجود تفاوت مبدأ، الگوی مفیدی برای مهاجرت فروشگاهی می‌دهد. تفاوت‌های اساسی ساختار فروشگاهی، بین دو سیستم می‌تواند درس‌های عملی داشته باشد.

حفظ سئو در گذار بین دو CMS

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

اصل اول: حفظ ساختار URL

اگر بتوانید ساختار URL سایت مقصد را با مبدأ یکسان نگه دارید، گوگل تفاوتی نمی‌بیند. مثلاً اگر URL شما در Joomla /news/politics/article-title بوده، در WordPress هم همان ساختار را بازتولید کنید. این کار با تنظیم پیوند یکتا در WordPress به شکل ساختارپسند و انتقال ساختار دسته‌بندی، ممکن است. برای درک دقیق‌تر، ساختار حرفه‌ای URL و سئو را ببینید.

اصل دوم: ریدایرکت ۳۰۱ برای همه URLهای تغییریافته

اگر بخشی از URLها را تغییر دادید، ریدایرکت ۳۰۱ اجباری است. این ریدایرکت، به گوگل می‌گوید اعتبار URL قدیمی به URL جدید منتقل شود. برای جابه‌جایی‌های گسترده، نقشه ریدایرکت دقیق لازم است. اگر آدرس دامنه هم در حال تغییر است، مسیر کامل را در تغییر دامنه بدون افت سئو آورده‌ام.

اصل سوم: بازبینی sitemap و robots.txt

sitemap جدید سایت WordPress را در Search Console ثبت کنید و sitemap قدیمی Joomla را حذف کنید. robots.txt را هم بازبینی کنید؛ گاهی در Joomla قواعدی برای مسدودسازی هست که در WordPress معنا ندارد. این بازبینی، از ایجاد خطاهای ایندکس جلوگیری می‌کند.

اصل چهارم: انتقال داده ساختاریافته

اگر در Joomla از Schema.org استفاده می‌کردید (مثلاً برای مقاله یا محصول)، این داده‌ها باید در WordPress هم بازسازی شوند. افزونه‌های سئو WordPress این کار را نیمه‌خودکار انجام می‌دهند اما نیاز به تنظیم دارند. اگر با مفهوم داده ساختاریافته آشنایی ندارید، در نقش اسکیما در AEO توضیحات کاربردی هست.

نکته آخر سئو در مهاجرت: پیوندهای ورودی که به سایت Joomla اشاره می‌کنند، با ریدایرکت‌های ۳۰۱ به WordPress منتقل می‌شوند. این انتقال، معمولاً بین سه تا شش ماه کامل می‌شود و در این دوره، نوسانات جزئی رتبه طبیعی است. پایش هفتگی Search Console، در دو ماه اول ضروری است.

تست جامع پس از مهاجرت

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

تست ساختاری

شش نقطه اصلی را بررسی کنید: صفحه اصلی، یک نوشته نمونه، یک برگه، صفحه دسته‌بندی، صفحه جستجو، و صفحه ۴۰۴. هر کدام باید درست رندر شوند و لینک‌های داخلی سالم باشند. این تست، در دو مرورگر (Chrome و Firefox) و در موبایل انجام شود.

تست عملکردی

اگر سایت Joomla فرم تماس، سیستم ثبت‌نام یا فروشگاه داشت، همه این‌ها باید تست شوند. یک سفارش آزمایشی یا یک فرم تستی، سریع‌ترین راه برای کشف مشکلات است. سرعت سایت را هم با ابزارهای تست اندازه بگیرید و با Joomla مقایسه کنید؛ معمولاً WordPress سرعت بالاتری دارد اما فقط اگر بهینه‌سازی درست انجام شود. اگر سرعت پایین بود، بهترین افزونه‌های کش وردپرس راهنمای خوبی است.

تست سئو و Indexing

sitemap جدید را در Search Console ثبت کنید. دو هفته اول، بخش Coverage را پایش کنید و خطاهای ایندکس را اصلاح کنید. اگر سایت مبدأ و مقصد روی دامنه‌های مختلف بودند، در Search Console از Change of Address استفاده کنید. این ابزار، به گوگل می‌گوید که سایت به دامنه جدید منتقل شده و اعتبار را منتقل می‌کند.

خطاهای پرهزینه در انتقال

در بازبینی پروژه‌های مهاجرت Joomla به WordPress، پنج خطا بیشترین تکرار را داشته‌اند.

خطا پیامد اصلاح
نبود نقشه ریدایرکت پیش از انتشار صدها لینک شکسته و افت سئو تولید نقشه ریدایرکت پیش از انتقال
عدم بازنشانی رمز برای کاربران موج تماس پشتیبانی در روز اول اطلاع‌رسانی از قبل و ارسال ایمیل بازنشانی
فراموشی Alt Text تصاویر از دست رفتن ترافیک سئوی تصویر نوشتن Alt معنادار در حین انتقال
انتقال افزونه‌های تجاری بدون لایسنس جدید غیرفعال شدن قابلیت‌های کلیدی خرید لایسنس WordPress قبل از مهاجرت
عدم پاک‌سازی کش پیش از انتشار نمایش نسخه قدیمی سایت به کاربران پاک‌سازی کش افزونه، سرور و CDN

یک نکته اضافی از تجربه: در پروژه‌هایی که سایت Joomla روی همان سرور با WordPress همزیستی می‌کند، مسئله مجوز فایل و Ownership به‌سرعت مشکل‌ساز می‌شود. توصیه من، انتقال به سرور جداگانه یا حداقل به دایرکتوری جداگانه با مالکیت درست است. اگر با مفهوم مجوز فایل آشنا نیستید، در بخش مربوطه در راهنماهای هاستینگ توضیح داده شده است.

پرسش‌های پرتکرار درباره مهاجرت Joomla به WordPress

این پرسش‌ها در جلسات مشاوره مهاجرت مرتب تکرار می‌شوند و پاسخ‌های کوتاه و دقیق، ابهامات رایج را رفع می‌کند.

آیا محتوای Joomla به‌صورت خودکار به WordPress منتقل می‌شود؟

نیمه‌خودکار، بله. ابزارهای تخصصی مثل FG Joomla to WordPress یا CMS2CMS، بخش عمده محتوا را منتقل می‌کنند اما ساختار دسته‌بندی، کاربران و تصاویر معمولاً نیاز به بازبینی دستی دارند. در سایت‌های با ساختار پیچیده یا کامپوننت‌های خاص، نمی‌توان به‌طور کامل به ابزارهای خودکار تکیه کرد.

چرا کاربران Joomla پس از مهاجرت نمی‌توانند وارد شوند؟

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

آیا مقایسه مهاجرت از Joomla با مهاجرت از Wix به WordPress کار درستی است؟

فقط بخشی از آن. در مهاجرت از Wix به WordPress که در مهاجرت از ویکس به وردپرس توضیح داده‌ام، دیتابیس قابل استخراج نیست و باید از API یا اسکرپینگ استفاده کرد. در Joomla، دیتابیس در دست شماست، پس مهاجرت ساختاری ساده‌تر است. اما در هر دو، حفظ سئو و ریدایرکت‌ها چالش مشترک است.

آیا باید سایت قدیمی Joomla را پس از مهاجرت حذف کنم؟

حداقل دو ماه نگه دارید. اگر خطای ایندکس یا ریدایرکت مشکلی داشت، می‌توانید ردیابی کنید که مسئله از کجاست. اما سایت Joomla را در حالت Read-Only نگه دارید و به‌روزرسانی نکنید؛ این کار از ایجاد محتوای همزمان در دو سایت جلوگیری می‌کند.

چقدر طول می‌کشد یک سایت Joomla به WordPress منتقل شود؟

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

آیا فروشگاه Joomla (VirtueMart یا HikaShop) را می‌توان به WooCommerce منتقل کرد؟

بله اما پروژه پیچیده‌تری است. محصولات، دسته‌بندی‌ها، مشتریان، سفارش‌ها و تنظیمات مالی باید جداگانه مهاجرت شوند. ساختار WooCommerce متفاوت از VirtueMart است و ترجمه دقیق لازم دارد. توصیه می‌کنم این بخش را به‌صورت پروژه مستقل از مهاجرت محتوایی در نظر بگیرید. مقایسه ساختاری در مهاجرت از Shopify به WooCommerce ایده‌های عملی می‌دهد.

آیا پس از مهاجرت، افت سئو اجتناب‌ناپذیر است؟

نه، اگر چهار اصل رعایت شود: یکسان نگه‌داشتن ساختار URL، ریدایرکت ۳۰۱ برای همه تغییرات، ثبت sitemap جدید در Search Console، و بازسازی داده ساختاریافته. تجربه‌ام: پروژه‌هایی که این چهار اصل را رعایت کرده‌اند، هیچ افت سئوی محسوسی نداشته‌اند. نوسانات کوتاه دو تا سه هفته‌ای، طبیعی است.

آیا می‌توانم قالب Joomla را به WordPress منتقل کنم؟

خیر. قالب‌های Joomla با ساختار PHP متفاوتی نوشته می‌شوند و با هسته WordPress سازگار نیستند. باید قالب جدید WordPress انتخاب یا ساخته شود و ظاهر قالب Joomla بازسازی شود. اگر هویت بصری سایت مهم است، ساخت قالب سفارشی WordPress انتخاب بهتری است.

چطور بفهمم کدام کامپوننت Joomla در WordPress معادل دارد؟

سه گام را انجام دهید. اول، فهرست کامپوننت‌های فعال Joomla را از بخش Extensions بردارید. دوم، هر کامپوننت را در وب جستجو کنید و معادل WordPress آن را پیدا کنید. سوم، اگر معادل مستقیم وجود ندارد، به قابلیت‌های هسته توجه کنید؛ بسیاری از کارکردها در WordPress بخشی از هسته یا بخشی از افزونه‌های عمومی هستند. یادآوری می‌کنم که در افزونه وردپرس چیست مفاهیم پایه انتخاب افزونه را کامل توضیح داده‌ام.

از یک CMS به CMS دیگر، با کمترین هزینه

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

سه اصل عملی که در همه پروژه‌های مهاجرت رعایت می‌کنم: ابتدا ساختار محتوای Joomla را دقیق بشناسید و نقشه ترجمه به WordPress بسازید. دوم، حفظ سئو را از روز اول جدی بگیرید و ریدایرکت‌های دقیق تعریف کنید. سوم، سایت Joomla را حداقل دو ماه پس از انتشار WordPress در حالت Read-Only نگه دارید. ترکیب این سه اصل، مهاجرت را از یک پروژه پرریسک به یک تغییر معماری قابل کنترل تبدیل می‌کند.

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