ייצוא וייבוא בלוגי וורדפרס – איך לייבא קבצי WXR גדולים (מעל 2MB)

אז נתבקשתי להעביר את הבלוג של “הכוסית עם אובססיית שואה” מהבלוגיה (המצויינת) של בלוגלי, לבלוג החדש של “יונית מוזס” שמאוכסן באופן עצמאי (ועל דומיין משל עצמו).
לאחר התקנת הוורדפרס, פניתי להעביר את הפוסטים והתגובות מהבלוג הישן של יונית לבלוג החדש. הורדתי את קובץ הייצוא של וורדפרס (קובץ XML, המכונה לעיתים גם בשם קובץ WXR ) מ: “עריכה וניהול” -> “יצוא”. וקיבלתי קובץ בנפח של 7.5MB. והבעיה התחילה כשניסיתי לייבא את הקובץ לבלוג החדש של יונית.

הבעיה הראשונה היא שרוב השרתים לא מאפשרים להעלות (דרך ממשק הניהול של וורדפרס), קובץ שמשקלו עולה על 2MB. כך היה המקרה אצלי. יש לזה שתי פתרונות.
הפתרון הראשון הוא לשנות את ההגדרות של קובץ ה- PHP.INI שעל השרת שלכם. לרוב שירותי האיכסון הרגילים אין גישה ישירה לקובץ, אך לחלקם יש אפשרות לעידכון הגדרות עקיף. כך לדוגמא, בשימוש בשירותי האיכסון של site5 יש הסבר מקיף כיצד לעשות זאת אצלם (הנה הלינק להסבר). שם תרצו לעדכן את ההגדרות של שני פרמטרים בקובץ והם: post_max_size & upload_max_filesize ולשנות אותם מ- 2MB ל- 8MB. עקבתי אחר ההוראות וזה עבד.
אפשרות שניה (ובעיני המועדפת), היא להוריד את התוכנה 7ZIP ולכווץ את קובץ הייצוא לפורמט של gzip. זה, במקרה שלי, הקטין את גודל הקובץ מתחת ל- 2MB ואיפשר לי להעלות אותו לשרת. יש הטוענים ששינוי ההגדרות בקובץ ה- PHP.INI, היה הכרחי אף הוא בשביל שלב הפתיחה של הקובץ. לא טרחתי לשנות בחזרה את ההגדרות ל- 2MB ולבדוק אותם, אז ייתכן וצריך לבצע את שני השלבים בשביל להעלות את הקובץ לשרת, וייתכן ומספיק גם רק הצעד השני.
עוד טענה היא שניתן להעלות את הקובץ לשרת דרך ה- FTP (שזה כמובן נכון), אבל מה שלא מצאתי הוא איך, אחרי שמעלים את הקובץ לשרת, ניגשים אליו דרך ממשק ייבוא הפוסטים של וורדפרס. אם מישהו יודע איך, הוא מוזמן לחלוק עם כולנו בתגובות.

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

הפתרון לשלב השני הגיע אלי בזכותו של אשף האופן-סורס תומר כהן. הוא הציע לפתוח את קובץ ה- WXR (אותו פתחתי עם notepad++ המומלץ), ולמצוא כל פעם את הפוסטים שהמערכת הצליחה לייבא, ולמחוק אותם מהקובץ. (כלומר, למחוק את החלקים שמתחלים ב: < item > ונגמרים ב- < / item > ). לדוגמא:

וואריאציה יותר אלגנטית לפתרון זה, הוא לפתוח את הקובץ, ולחלק אותו לכמה קבצים קטנים. כאשר תמיד יש להקפיד שבתחילת וסוף כל קובץ יופיעו –
בתחילתו:



including all info like category, tags, etc to just before the first 

בסופו:



ואחרי 8 (8! ), איטרציות כאלה, סוף סוף קיבלתי את המסך המבורך של סיום ייבוא הפוסטים:

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

ולסיום: שוב תודה לתומר על הטיפ המושיע, ועוד תודה לאלעד (מבלוגלי) על הסבלנות הכללית וההפניה לבקשת העצה מתומר.

6 תגובות בנושא “ייצוא וייבוא בלוגי וורדפרס – איך לייבא קבצי WXR גדולים (מעל 2MB)”

  1. הדרך העדיפה ליבא בסיסי נתונים באופן כללי היא בעזרת mysqldump וmysql.
    השיטה הזו דורשת גישת SHELL שרוב שרתי האירוח השיתופיים לא מספקים, אבל היא מונעת לולינות מהסוג הזה.
    יבאתי כבר בסיסי נתונים של של ג’גות בלי שום בעיה ככה.
    אפשר כמובן גם ליצא ולייבא עם phpmyadmin, מה שכנראה יהיה יותר חסכוני מאשר לייצא לאיזה קובץ XML, אבל כשאתה מעלה את הקבצים חזרה אתה עלול להתקל באותה בעיה בדיוק, או בבעיה אחרת שהיא שהשרת לא מוכן להריץ סקריפט שלוקח כל כך הרבה זמן ומפסיק את פעולת היבוע באמצע.
    כמו שאמרתי, הדרך המקצועית והעדיפה היא mysqldump.

  2. כמו שאמרתי בתגובה בקבוצת וורדפרס בגוגל, אני השתמשתי בשיטת הFtp והupload הרגיל, ככה:

    שלב 1: להעביר למשתמש אחר פוסטים עד שרואים שהקובץ קטן מ- 2 מגה ביט.

    שלב 2: לייצא את הקובץ מהוורפרס הישן ולעלות אותו כדי לייבא אותו לחדש (רק לעלות..)

    שלב 3: לייצא את הקובץ עם כל המשתמשים, להכנס לFtp ולתקיית העלאה של הבלוג, שם נמצא בתיקיה של התאריך של אותו היום קובץ הייבוא שלנו. פשוט מאוד, לשנות את השם של הקובץ שמכיל את כל הפוסטים לאותו השם ולדחוס את הישן.

    שלב 4: להתחיל בתהליך הייבוא המלא. הקובץ יקרא את הקובץ בצורה מלאה וייבא את כל הפוסטים בהצלחה.. (:

    [אפשר גם ליצור קובץ X מלא, לערוך אותו בNpp+ שמסירים מספר פוסטים עד שהוקבץ קטן מ2 מגה ביט ומשם להמשיך משלב 2)

  3. וואו. הצעתי את הרעיון הזה כבדרך אגב, ומסתבר שהוא מה שהציל אותך.

    כדי להגן עליך מתלונות של מגיבים בפוטנציה, אציין מראש שלפעמים לחפור בקוד ולפתור את הבעיה בדרך הנכונה יקח הרבה יותר זמן מלעשות את אותה הפעולה בצורה ידנית כפי שנקטת. אני מודה שלפעמים אני מתעצל אפילו לכתוב סקריפט של שורה אחת, ובמקום זאת עושה פעולות search&replace פשוטות.

השאר תגובה