نقل موقع ووردبريس يدويًا لاستضافة جديدة خطوة بخطوة

مكعبات بيانات مضيئة تنتقل بين سيرفرين، تعبيرًا عن نقل موقع ووردبريس يدويًا إلى استضافة جديدة

إضافة النقل وقفت عند 80% ومش راضية تكمّل؟ أو الاستضافة الجديدة رافضة ملف بحجم 3 جيجا؟ ساعتها مفيش غير إنك تنقل الموقع بإيدك، والحمد لله العملية أبسط مما تتخيل لو مشيت بالترتيب.

في الدليل ده كل خطوة ليها طريقتين: واحدة ووردبريس لتضيف له ميزة جديدة، مثل متجر أو نموذج تواصل أو تحسين للسيو، دون كتابة كود. اختر الإضافات الموثوقة المحدّثة، ولا…">الإضافات والقوالب والمستخدمين والإعدادات، وما يظهر فيها يختلف حسب دور المستخدم.">بلوحة التحكم وبرنامج والسيرفر عبر اتصال SSH مشفّر، وهي البديل الآمن لـ FTP العادي الذي يرسل كلمة المرور نصًا واضحًا يمكن التقاطه بسهولة في…">SFTP بس، وواحدة لو عندك وصول SSH وعايز تخلّص في كام أمر.

متى تختار النقل اليدوي؟

إضافات النقل مثل Duplicator وAll-in-One WP Migration وMigrate Guru تكفي معظم المواقع الصغيرة، فاستخدمها إن نجحت معك. النقل اليدوي يستحق الجهد حين يتجاوز موقعك حدود النسخة المجانية للإضافة أو حد الرفع في الاستضافة الجديدة.

ويفيدك أيضًا حين تفشل الإضافة ولا تعرف أين انكسرت العملية. فكل إضافة نقل تنفّذ الخطوات نفسها التي ستقرؤها هنا، لكن بعيدًا عن عينك.

التجهيز قبل البدء

جهّز هذه القائمة قبل أن تلمس أي ملف:

  • وصول آمن للاستضافتين: حساب SFTP، ومعه phpMyAdmin أو SSH على الطرفين. تجنّب FTP العادي لأنه يرسل كلمة المرور دون تشفير.
  • برنامج نقل ملفات: FileZilla يكفي، وحمّله من موقعه الرسمي فقط. وإن كنت على Windows 10 أو 11 فأمر ssh متاح في الطرفية دون الحاجة إلى PuTTY.
  • قاعدة بيانات فارغة على الاستضافة الجديدة: مع مستخدم وكلمة مرور، وأضف الدومين إلى الحساب الجديد.
  • نسخة PHP نفسها أو أحدث: تجدها في لوحة التحكم (Dashboard) من Tools > Site Health > Info > Server.
  • خفض الـ DNS بنسخة من السجل قبل السؤال عنه مجددًا، وخفضها إلى 300 ثانية قبل النقل بيوم يجعل تحويل الدومين ينتشر للزوار…">TTL: قبل النقل بيوم، اضبط مدة صلاحية سجل DNS (TTL) لسجل A على 300 ثانية، فينتشر التحويل لاحقًا خلال دقائق بدل ساعات.

خطّط كذلك لـ «تجميد المحتوى». أي تعليق أو طلب يصل إلى الموقع القديم بعد التصدير لن يظهر في الجديد. في مدونة يكفي اختيار ساعة هادئة، أما في متجر ووكومرس (WooCommerce) فشغّل وضع الصيانة، خصوصًا مع طلبات الدفع عند الاستلام التي تُسجَّل لحظيًا.

خريطة النقل

نقل ووردبريس يدويًا في 6 مراحل

الترتيب هنا مهم: كل مرحلة تعتمد على التي قبلها

  1. التجهيز

    قاعدة بيانات فارغة، نفس نسخة PHP، وخفض TTL إلى 300 ثانية قبلها بيوم.

  2. التصدير والنسخ

    صدّر قاعدة البيانات وانسخ الملفات كاملة مع .htaccess المخفي.

  3. الإعداد والاستيراد

    عدّل wp-config.php أولًا، ثم استورد ملف SQL.

  4. استبدال الدومين

    بأمر wp search-replace فقط، وليس بمحرر نصوص.

  5. الاختبار

    عاين الموقع عبر ملف hosts واضبط الصلاحيات والروابط الدائمة.

  6. التحويل والمراقبة

    غيّر سجلات A، أصدر SSL، وراقب سجل الأخطاء أسبوعًا.

ابن موقعك قطعة قطعةarabcms.com
ملخص مراحل نقل موقع ووردبريس يدويًا من استضافة إلى أخرى

1. تصدير قاعدة البيانات من الاستضافة القديمة

بدون SSH: افتح phpMyAdmin واختر قاعدة بيانات الموقع، ثم Export واترك الطريقة Quick والصيغة SQL واضغط Go. لو كانت قاعدة البيانات كبيرة، اختر Custom وفعّل ضغط gzip؛ الملف المضغوط غالبًا عُشر الحجم، وphpMyAdmin يستورد .sql.gz مباشرة.

مع SSH: ادخل مجلد ووردبريس ودع واجهة سطر أوامر ووردبريس (WP-CLI) تقرأ بيانات الاتصال من wp-config.php:

cd ~/public_html
wp db export ~/site.sql
gzip ~/site.sql

احتفظ بهذا الملف حتى بعد نجاح النقل، فهو نسختك الاحتياطية (Backup) من الموقع القديم. وسجّل أيضًا بادئة الجداول: لو كانت الجداول باسم wp_options وwp_posts فالبادئة هي wp_، وستحتاجها في الخطوة 3.

2. نسخ الملفات

بدون SSH: اتصل بالاستضافة القديمة عبر FileZilla، وفعّل أولًا Server > Force showing hidden files، وإلا سيتخلف ملف .htaccess ومعه التحويلات والقواعد المخصصة. حمّل مجلد ووردبريس كاملًا، ثم ارفعه إلى مجلد الموقع في الاستضافة الجديدة.

آلاف الملفات الصغيرة تنتقل ببطء عبر بروتوكول نقل الملفات الآمن (SFTP). إن كان في الاستضافتين File Manager داخل cPanel أو Plesk، اضغط المجلد في أرشيف واحد، انقله، ثم فكّه في الجهة الأخرى.

مع SSH: يمكنك تمرير الملفات من سيرفر إلى آخر عبر جهازك دون إنشاء أرشيف على أي منهما:

ssh user@old-host "tar czf - -C ~/public_html ." | ssh user@new-host "tar xzf - -C ~/public_html"

انسخ التثبيت كاملًا بملفات النواة، لا نسخة ووردبريس جديدة مع مجلد wp-content فقط. الطريقتان تعملان، لكن النسخة الكاملة تلغي احتمال اختلاف الإصدارات.

3. تعديل wp-config.php على الاستضافة الجديدة

افتح wp-config.php في مجلد الموقع الجديد وضع بيانات قاعدة البيانات التي أنشأتها:

define( 'DB_NAME', 'new_database_name' );
define( 'DB_USER', 'new_database_user' );
define( 'DB_PASSWORD', 'new_database_password' );
define( 'DB_HOST', 'localhost' );

لا تفترض أن DB_HOST هو localhost؛ اسأل الاستضافة. الاستضافات المُدارة وقواعد البيانات السحابية تستخدم غالبًا اسم سيرفر منفصلًا، والقيمة الخاطئة تعطيك رسالة «Error establishing a database connection» فقط.

تأكد كذلك أن $table_prefix يطابق البادئة التي سجلتها، وإلا لن يجد ووردبريس جداوله وسيعرض عليك تثبيتًا جديدًا. وابحث عن أي مسارات مطلقة خاصة بالسيرفر القديم، مثل WP_CONTENT_DIR أو ثوابت إضافات الكاش، وعدّلها.

مع SSH تعدّل WP-CLI الملف بدلًا منك:

wp config set DB_NAME new_database_name
wp config set DB_USER new_database_user
wp config set DB_PASSWORD 'new_database_password'
wp config set DB_HOST localhost

4. استيراد قاعدة البيانات

بدون SSH: افتح phpMyAdmin في الاستضافة الجديدة، اختر القاعدة الفارغة، ثم Import واختر ملف الخطوة 1. إن رُفض لحجمه فاضغطه بـ gzip، وإن بقي أكبر من الحد فاطلب من الدعم الفني استيراده؛ معظم الاستضافات تفعل ذلك خلال ساعة.

مع SSH: ارفع الملف واستورده من مجلد ووردبريس. لهذا جاءت الخطوة 3 أولًا، فـ WP-CLI يقرأ بيانات الاتصال من الملف المعدّل:

cd ~/public_html
gunzip ~/site.sql.gz
wp db import ~/site.sql

خطأ شائع عند الانتقال من MySQL 8 إلى MariaDB: Unknown collation: 'utf8mb4_0900_ai_ci'. السبب أن MariaDB لا تعرف قاعدة ترتيب المحارف (Collation) هذه. افتح ملف .sql واستبدل كل utf8mb4_0900_ai_ci بـ utf8mb4_unicode_ci ثم أعد الاستيراد؛ التعديل آمن لأنه يمس تعريفات الجداول لا المحتوى.

5. استبدال الدومين والمسارات القديمة — الخطوة الأخطر

تخطَّ هذه الخطوة إن بقي الدومين كما هو ولم تكن هناك مسارات للسيرفر القديم داخل قاعدة البيانات. غير ذلك، هنا تفشل معظم عمليات النقل اليدوي.

لا تستبدل الدومين بمحرر نصوص داخل ملف SQL. ووردبريس والإضافات تحفظ الودجات وإعدادات القالب بصيغة البيانات المسلسلة (Serialized Data)، وفيها يُكتب طول كل نص بجواره، مثل s:22:"http://old-domain.com/". لو تغيّر طول الدومين ولم يتغير الرقم، يعجز ووردبريس عن قراءة القيمة فيتجاهلها بصمت: تختفي القوائم والودجات وإعدادات القالب دون أي رسالة خطأ.

مع SSH: أمر search-replace في WP-CLI يفهم البيانات المسلسلة. شغّله أولًا مع --dry-run ليعرض عدد الاستبدالات فقط:

wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables --skip-columns=guid --dry-run
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables --skip-columns=guid

الأمر نفسه يصلح مسارات السيرفر القديمة، مثل /home2/olduser/public_html، التي تحفظها بعض الإضافات للكاش والسجلات.

بدون SSH: استخدم أداة Search-Replace-DB من interconnect/it. ارفع مجلدها إلى جذر الموقع باسم عشوائي يصعب تخمينه، نفّذ تجربة ثم الاستبدال الفعلي، واحذف المجلد فورًا؛ بقاؤه يمنح أي شخص يعثر عليه صلاحية كتابة كاملة على قاعدة بياناتك.

في Elementor: بعد استبدال الدومين، افتح Elementor > Tools واستخدم Replace URL للتأكد من روابط الصفحات المبنية، ثم Regenerate CSS & Data حتى لا تبقى ملفات CSS المولّدة مشيرة إلى الدومين القديم.

6. اختبار الموقع الجديد قبل تحويل DNS

الدومين ما زال يشير إلى الاستضافة القديمة، لكن يمكنك توجيه جهازك أنت فقط إلى السيرفر الجديد بإضافة سطر في ملف المضيفين (Hosts File):

203.0.113.10 example.com www.example.com

على Windows الملف في C:WindowsSystem32driversetchosts ويحتاج محررًا يعمل كمسؤول، وعلى macOS وLinux هو /etc/hosts. أعد تشغيل المتصفح وتصفّح الرئيسية وبعض المقالات ونموذج التواصل وصفحة الدخول. توقّع تحذير شهادة SSL في هذه المرحلة، أما بقية الموقع فيجب أن يعمل.

احذف السطر بعد الانتهاء، وإلا لن تلاحظ أي خطأ في DNS لاحقًا لأن جهازك سيظل يذهب إلى السيرفر الجديد مباشرة.

7. ضبط صلاحيات الملفات

الملفات المنسوخة قد تصل بصلاحيات خاطئة. ووردبريس يتوقع 755 للمجلدات و644 للملفات. مع SSH نفّذ داخل مجلد ووردبريس:

find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
chmod 640 wp-config.php

علامة + تمرر ملفات كثيرة إلى استدعاء chmod واحد، وهذا أسرع بكثير. وwp-config.php يحمل كلمة مرور قاعدة البيانات لذا يأخذ صلاحية أضيق؛ إن ظهرت صفحة بيضاء بعدها فجرّب 600 أو اسأل الدعم.

بدون SSH: في FileZilla انقر بالزر الأيمن على المجلد، واختر File permissions، واكتب 755 مع Recurse into subdirectories وApply to directories only. كرر بـ 644 وApply to files only.

8. تحديث الروابط الدائمة ومسح الكاش

من Settings > Permalinks اضغط Save Changes دون تغيير شيء. هذا يعيد بناء قواعد الروابط الدائمة (Permalink) ويحل غالبًا مشكلة «كل الصفحات 404 ما عدا الرئيسية». ثم امسح كاش إضافة التخزين المؤقت وكاش Cloudflare إن كنت تستخدمه.

wp rewrite flush
wp cache flush

9. تحويل DNS

وجّه سجل A للدومين وwww إلى IP السيرفر الجديد، وكذلك سجل AAAA إن وُجد. لا تلمس سجلات MX إلا إن كان بريدك ينتقل أيضًا؛ من السهل جدًا تعطيل البريد في نقل كان المقصود منه الموقع فقط.

بفضل خفض الـ TTL، يصل معظم الزوار إلى السيرفر الجديد خلال دقائق. لكن بعض مزودي الإنترنت يتجاهلون الـ TTL، فأبقِ الحساب القديم يعمل أسبوعًا على الأقل.

10. إصدار شهادة SSL

شهادة Let’s Encrypt تتحقق من أن الدومين يشير إلى السيرفر الذي يطلبها، لذلك تأتي هذه الخطوة بعد تحويل DNS. معظم لوحات التحكم تصدرها بنقرة أو تلقائيًا. إن ظهر القفل مع تحذير، فهناك محتوى ما زال يُحمَّل عبر http://؛ أعد أمر الخطوة 5 من http://example.com إلى https://example.com.

11. مراجعة سجل الأخطاء

كل استضافة مضبوطة بشكل مختلف قليلًا، وإضافة كانت هادئة على السيرفر القديم قد تشتكي على الجديد. أضف هذه الأسطر إلى wp-config.php ليوم أو يومين:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

تُكتب الأخطاء في wp-content/debug.log دون أن تظهر للزوار. أعد WP_DEBUG إلى false بعد الانتهاء، لأن ملف السجل قابل للقراءة من المتصفح على سيرفرات كثيرة.

بعد النقل: أسبوع مراقبة

احتفظ بالاستضافة القديمة وملف قاعدة البيانات أسبوعًا كاملًا. تأكد أن نماذج التواصل ترسل البريد فعلًا، وافتح الموقع من الموبايل على باقة البيانات لأنها تستخدم DNS مختلفًا عن راوتر البيت. ألغِ الحساب القديم فقط بعد أسبوع بلا مفاجآت.

وماذا عن وكلاء الذكاء الاصطناعي؟ يذكر كاتب المصدر أنه جرّب وكيلًا برمجيًا بصلاحية الطرفية على سيرفرين تجريبيين: أنجز الجرد ونقل الملفات وتعديل الإعدادات جيدًا، ثم رفضت طبقة الأمان فيه تنفيذ استيراد قاعدة البيانات على سيرفر بعيد حتى بعد الموافقة. الخلاصة من تجربته: الوكيل يوفّر وقت التحضير والمراجعة، لكن الخطوتين 4 و5 تبقيان مسؤوليتك.

الأسئلة الشائعة

س: هل أحتاج إلى إضافة لنقل موقع ووردبريس؟
ج: لا. الإضافات تختصر الخطوات للمواقع الصغيرة، لكن النقل اليدوي ينجح مع أي حجم ويكشف لك موضع الخطأ إن حدث.

س: لماذا اختفت القوائم والودجات بعد تغيير الدومين؟
ج: غالبًا لأن الدومين استُبدل يدويًا داخل ملف SQL فانكسرت البيانات المسلسلة. أعد الاستيراد من النسخة الأصلية واستخدم wp search-replace أو Search-Replace-DB.

س: ما سبب رسالة Error establishing a database connection بعد النقل؟
ج: بيانات خاطئة في wp-config.php، وأشهرها قيمة DB_HOST. تأكد منها مع الاستضافة الجديدة، وراجع اسم القاعدة والمستخدم وكلمة المرور.

س: كم يستغرق انتشار تحويل DNS؟
ج: دقائق إن خفّضت الـ TTL إلى 300 ثانية قبل يوم، وقد يصل إلى 48 ساعة إن لم تفعل. أبقِ الاستضافة القديمة أسبوعًا احتياطًا.

س: هل يتأثر البريد الإلكتروني بنقل الموقع؟
ج: لا، طالما لم تغيّر سجلات MX. غيّر سجلات A وAAAA فقط إن كان بريدك سيبقى عند مزوده الحالي.

الخلاصة

النقل اليدوي هو 11 خطوة مرتبة: صدّر، انسخ، عدّل الإعدادات، استورد، استبدل بأمان، اختبر، ثم حوّل DNS. لو التزمت بالترتيب ومسكت الاستبدال بـ WP-CLI بدل المحرر، هتنقل أي موقع مهما كان حجمه وانت مطمّن.

مرجع المقال (بالإنجليزية): Manual WordPress Migration, Step by Step
المقال ده مش ترجمة حرفية: متكيّف للقارئ العربي ومضاف عليه سياق ووردبريس وElementor وJetEngine.

اترك تعليقاً