דילוג לתוכן
כלים

SQL לחיפוש והחלפה

שנו את כתובת האתר שלכם בלי לפגום בנתונים מסוג serialized

רץ בדפדפן שלכם. שום דבר לא מועלה.

The change

Read this before you run anything

WordPress stores many options as PHP-serialized strings, and a serialized string records its own byte length — s:19:"http://old-site.com". A plain SQL replace changes the text but not the length, so PHP can no longer unserialize the row. It does not error. The value just silently becomes empty.

What you lose: widget configuration, theme mods, and most plugin settings. Usually you do not notice until days later, and by then the backup you would have restored is gone too.

This is why the queries below deliberately do not touch wp_options.

What are you moving?
search-replace.sql

Take a database backup first. Not 'consider taking one' — take one. There is no undo for an UPDATE.

אודות SQL לחיפוש והחלפה

חיפוש-והחלפה נאיבי ב-SQL על מסד נתונים של WordPress שובר כל אפשרות serialized שהוא נוגע בה, כי אורך המחרוזת השמור כבר לא תואם. הכלי מייצר את השאילתות הבטוחות, ומסביר בדיוק אילו מהן לא.

FAQ

שאלות

האם אפשר לשנות את כתובת האתר בוורדפרס עם חיפוש והחלפה ב-SQL?

לא בבטחה, וזו העצה הגרועה הכי משותפת בעולם הוורדפרס. הרבה אפשרויות נשמרות כמחרוזות serialized של PHP שמתעדות את אורך הבתים של עצמן. החלפת SQL רגילה משנה את הטקסט אבל לא את האורך, אז PHP נכשל בשקט לבטל את הסריאליזציה של השורה והערך פשוט נעלם — לוקח איתו הגדרות וידג'טים, שינויי תבנית והגדרות תוספים.

במה כדאי להשתמש במקום?

WP-CLI: 'wp search-replace old new --all-tables --dry-run' קודם, ואז בלי --dry-run. הוא מבין סריאליזציה וכותב מחדש את קידומות האורך נכון. אם אין לכם גישה ל-CLI, התוסף Better Search Replace עושה את אותו הדבר מתוך הניהול.

האם כדאי לעדכן את עמודת ה-GUID?

לא. ה-GUID הוא מזהה ייחודי קבוע לפוסט, לא קישור, וקוראי פידים מזהים לפיו. כתיבתו מחדש גורמת לכל מנוי לראות כל פוסט ישן כחדש לגמרי. התיעוד של וורדפרס אומר במפורש לא לשנות אותו.