الأربعاء، 23 أبريل، 2014

كيف تنقل موقع wordpress إلى موقع آخر

السلام عليكم و رحمة الله




هل قمت بتحويل موقعك ليس من إستضافة إلى إستضافة أخرى، بل قمت بتغيير إسم موقعك من إسم إلى آخر، مثلا: http://mysite.net  إلى http://mysite.com  لكن فوجئت بأن عملية التحويل قد فشلت و شككت بأنك قمت بها بشكل غير و أعدت تجربة تحويل موقعك مرارا و لكن دائما نفس النتيجة؟
السبب هو أن سكريبت WordPress  لا يحتفظ فقط بإسم المجلد الحالي كمسار و إنما بإسم الموقع كاملا، لهذا عند عملية تغيير إسم النطاق ستجد أن الموقع لايعمل. الآن و قد فهمنا السبب كيف نقوم بعملية التحويل؟ الإجابة بسيطة: بتغير إسم النطاق القديم(http://mysite.net) بإسم النطاق الجديد (http://mysite.net)  في قاعدة البيانات.
يقوم سكريبت WordPress  بالإحتفاظ برابط النطاق في كلا من الجدولين wp_posts  و wp_options بالضبط في الأعمدة التالية: guid، post_content، option_value.
أكيد تغيير كل سطر على حدى في قاعدة البيانات سيكلف جهدا و وقتا لو كان الموقع كبيرا بعض الشيئ، لهذا سنلجأ إلى phpMyAdmin  للبحث و الإستبدال في الأعمدة، أكيد سيكون هذا بإستخدام أوامر SQL و الدالة REPLACE()  التي يوفرها خادم قاعدة بيانات MySQL.
 عملية النقل: 
أولا نقوم بتعطيل خاصية الروابط الدائمة غن كانت نفعلة و ذلك بالذهاب إلى لوحة التحكم الخاصة ب WordPress في حالتنا http://mysite.net/wp-admin
بعدها نختار إعدادت -> روابط دائمة و نختار من اليسار إفتراضي كما هو موضح في الصورة

 
 الآن نقوم بالذهاب إلى phpMyAdmin و نقوم بأخذ نسخة من قاعدة البيانات لنقوم لاحقا برفعها للموقع الجديد، من phpMyAdmin قم بإختيار قاعدة البيانات، بعدها إختر Export، أخيرا إضغط على  الزر GO، ستظهر لك نافذة لتحميل ملف بإمتداد sql، هذا هو موقعنا، قم بحفظه.



 مرة اخرى نذهب للـ phpMyAdmin لكن هذه المرة من الإسم الجديد للنطاق، نقوم بإختيار قاعدة البيانات التي نريد تصدير لها موقعنا القديم، نختار import بعدها نضغط على الزر Browse من هناك نختار الملف الذي قمنا سابقا بتحميله عند تصدير قاعدة البيانات.
 بعد إتمام عملية تصدير قاعدة البيانات للموقع الجديد نقوم بعملية تغيير روابط الموقع القديم بالموقع الجديد في قاعدة البيانات الحالية بإستخدام الأمر UPDATE و ذلك بإختيار قاعدة البيانات، في حالي إسمها gn2، بعدها نختار التبويب SQL:






 الأوامر كالتالي:
UPDATE dz_posts SET post_content = REPLACE(post_content, 'http://mysite.net', 'http://mysite.com')
UPDATE dz_posts SET guid = REPLACE(guid , 'http://mysite.net', 'http://mysite.com')
UPDATE dz_option SET option_value= REPLACE(option_value, 'http://mysite.net', 'http://mysite.com')

الدالة (REPLACE(field_name, search_for, replace_with تأخذ 3 وسائط كالآتي:
  1. field_name: الحقل المراد البحث و التغيير فيه.
  2. search_for: الكلمة المراد البحث للتغير.
  3. replace_with: الكلمة المراد التغيير بها.

للتأكد من أن العملية تمت بنجاح نذهب لتجربة الموقع.;) http://mysite.com