الانتقال إلى المحتوى
الأدوات

استعلامات SQL للبحث والاستبدال

غيّر عنوان URL لموقعك دون إفساد البيانات المتسلسلة

يعمل في متصفحك. لا يُرفع أي شيء.

التغيير

اقرأ هذا قبل أن تشغّل أي شيء

يخزّن WordPress العديد من الخيارات على هيئة سلاسل PHP-serialized، وتسجّل السلسلة المُسلسَلة طولها بالبايت بنفسها — s:19:"http://old-site.com". الاستبدال المباشر عبر SQL يغيّر النص دون الطول، فلا يعود بإمكان PHP فكّ تسلسل الصف. وهو لا يُصدر خطأً، بل تصبح القيمة فارغة بصمت.

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

لهذا السبب فإن الاستعلامات أدناه لا تمسّ wp_options عن قصد.

ما الذي تنقله؟
search-replace.sql

خذ نسخة احتياطية من قاعدة البيانات أولاً. ليس 'فكّر في أخذ واحدة' — بل خذ واحدة. لا يوجد تراجع عن أمر UPDATE.

عن استعلامات SQL للبحث والاستبدال

إجراء بحث واستبدال SQL بسيط على قاعدة بيانات ووردبريس يُفسد كل خيار متسلسل (serialized) يمسّه، لأن طول السلسلة المخزَّن لم يعد يطابق. تُنشئ هذه الأداة الاستعلامات الآمنة، وتوضّح بالضبط أيّها غير آمن.

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

أسئلة

هل يمكنني تغيير رابط موقع WordPress عبر بحث واستبدال بـ SQL؟

ليس بأمان، وهذه أكثر نصيحة سيئة يُتشارَك بها في WordPress. تُخزَّن كثير من الخيارات كسلاسل PHP مُسلسَلة تسجّل طول بايتاتها بنفسها. استبدال SQL بسيط يغيّر النص لا الطول، فيفشل PHP بصمت في فكّ تسلسل الصف وتختفي القيمة ببساطة — آخذةً معها إعدادات الودجات وتعديلات القالب وإعدادات الإضافات.

ماذا ينبغي أن أستخدم بدلًا من ذلك؟

WP-CLI: ‏'wp search-replace old new --all-tables --dry-run' أولًا، ثم بدون ‎--dry-run. فهو يفهم التسلسل ويعيد كتابة بادئات الطول بشكل صحيح. إذا لم يكن لديك وصول إلى CLI، فإضافة Better Search Replace تفعل الشيء نفسه من لوحة التحكم.

هل ينبغي أن أحدّث عمود GUID؟

لا. الـ GUID معرّف فريد دائم للمقالة، لا رابط، وقارئات الخلاصات تعتمد عليه. إعادة كتابته تجعل كل مشترك يرى كل مقالة قديمة وكأنها جديدة تمامًا. توثيق WordPress يقول صراحةً ألّا تغيّره.