דילוג לתוכן
שגיאות וקריסות

לתקן את עורך הבלוקים של וורדפרס שלא נטען

ברוב המקרים, עורך בלוקים של וורדפרס שלא נטען הוא שגיאת JavaScript — סקריפט שבור אחד מתוסף או מתבנית עוצר את כל אפליקציית React, ו

פורסם

ברוב המקרים, עורך בלוקים של וורדפרס שלא נטען הוא שגיאת JavaScript — סקריפט שבור אחד מתוסף או מתבנית עוצר את כל אפליקציית React, והעורך אף פעם לא מסיים להיטען. פתחו את קונסולת המפתחים של הדפדפן (F12, או Cmd+Option+I במק), טענו מחדש את מסך העריכה, וקראו את השגיאה האדומה. כמעט תמיד היא מציינת את הקובץ שזרק את השגיאה. השורה הזו לבדה מגלה לכם איזה תוסף להשבית, ובדרך כלל אפשר לחזור לכתוב תוך פחות מחמש דקות. התקנה מחדש של וורדפרס, העלאת ה־PHP memory limit ומעבר ל־Classic Editor הם שלושת הפתרונות הנפוצים ביותר שמציעים ברשת — ושלושתם בדרך כלל הצעד הלא נכון.

למה העורך נשבר בדיוק ככה

עורך הבלוקים (Gutenberg) הוא אפליקציית React מסוג single-page שרצה בתוך wp-admin/post.php ו־post-new.php. וורדפרס טוענת ערימה של חבילות סקריפטים — wp-blocks, wp-element, wp-editor, wp-edit-post — והאפליקציה עולה דרך wp.domReady(). JavaScript מפסיק לרוץ ברגע החריגה הראשונה שלא נתפסה. אז אם סקריפט כלשהו זורק שגיאה בזמן שהעורך מאתחל, כל מה שבא אחריו מת יחד איתו. אזור הפוסט שכתבתם בקפידה קורס למסך לבן ריק, או להודעה “The editor has encountered an unexpected error.”

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

מצב הכשל השני נראה אחרת: העורך נטען, אבל השמירה זורקת “Updating failed. The response is not a valid JSON response.” זו לא בעיית JavaScript. העורך מדבר עם ה־REST API בכתובת /wp-json/wp/v2/, ומצפה לקבל בחזרה JSON נקי. אם תוסף או ה־functions.php של התבנית שלכם פולט הודעת PHP notice, warning או fatal לפני ה־JSON — או שתוסף אבטחה חוסם את נתיב ה־REST, או שתוסף הפניות משכתב את הכתובת — התגובה מזוהמת והעורך לא מצליח לפרסר אותה.

איך מתקנים, מהמהיר ביותר קודם

1. קראו את הקונסולה. שחזרו את התקלה כשה־DevTools פתוח. שגיאה כמו Uncaught TypeError ... some-plugin/build/index.js מצביעה ישירות על התוסף האשם. הצעד היחיד הזה פותר את רוב המקרים וחוסך מכם ניחוש עיוור.

2. שללו את הדפדפן. רעננו רענון קשיח (Cmd/Ctrl+Shift+R), ואז נסו חלון גלישה בסתר עם התוספים כבויים. חוסמי פרסומות ותוספי פרטיות לפעמים מסירים סקריפטים של הניהול. אם זה עובד בגלישה בסתר, הבעיה היא תוסף דפדפן או מטמון ישן — לא האתר שלכם.

3. בדקו את ה־REST API ישירות אם ראיתם את ההודעה “not a valid JSON”. גשו אל https://yoursite.com/wp-json/ בדפדפן. אתם אמורים לקבל קיר של JSON. אם אתם מקבלים HTML, שגיאת 500 או הפניה להתחברות — זה הבאג שלכם: תוסף שובר את תגובת ה־REST, לא העורך עצמו.

4. בצעו חצייה בינארית של התוספים. השביתו את כולם, ודאו שהעורך נטען, ואז הפעילו אחד־אחד עד שזה נשבר שוב. אם אתם נעולים לגמרי מחוץ ל־wp-admin, עשו את זה דרך SFTP על ידי שינוי שם התיקייה:

mv wp-content/plugins wp-content/plugins_off

וורדפרס משביתה הכול כשהתיקייה נעלמת. שנו את השם בחזרה, ואז הזיזו תוספים פנימה והחוצה בנפרד.

5. בדקו את התבנית. עברו ל־Twenty Twenty-Four. תבנית שטוענת JS שבור של העורך או זורקת PHP ב־functions.php יוצרת את אותם הסימפטומים בדיוק.

6. הפעילו את הלוג וקראו את השגיאה האמיתית. במיוחד בכשלי REST/JSON, הפעילו debugging ב־wp-config.php:

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

ה־fatal נכתב אל wp-content/debug.log עם הקובץ ומספר השורה המדויקים. אם ה־stack trace הזה צפוף — שמות מחלקות עם namespace, שרשראות require, fatal קבור מתחת לעשר שורות של trace — הדביקו אותו ב־מפענח לוג השגיאות של וורדפרס כדי לראות, במילים פשוטות, איזה תוסף ואיזו שורה באמת גרמו לזה. זה ההבדל בין “משהו שבור” ל”שורה 214 בתוסף הספציפי הזה שבורה”.

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

define( 'SCRIPT_DEBUG', true );
define( 'CONCATENATE_SCRIPTS', false );

מה לא לעשות

אל תתקינו את התוסף Classic Editor ותכריזו שזה מתוקן. הוא לא מתקן כלום — הוא מסתיר את עורך הבלוקים כדי שתפסיקו לראות את השגיאה. ה־JavaScript השבור או תגובת ה־REST השבורה עדיין שם, וזה יחזור לנשוך אתכם בעורך האתר, בווידג’טים, או בפעם הבאה שתעדכנו. אבחנו קודם; חזרו ל־Classic רק אם קיבלתם החלטה מודעת להפסיק להשתמש בבלוקים.

אל תעלו את ה־PHP memory limit באופן אוטומטי. זה תיקון ה־copy-paste האהוב על האינטרנט, אבל עורך ריק הוא לעיתים רחוקות מיצוי זיכרון. מיצוי אמיתי זורק fatal ספציפי — “Allowed memory size of N bytes exhausted” — שאותו תראו ב־debug.log. אם השורה הזו לא שם, יותר זיכרון לא ישנה כלום.

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

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

עדיין תקועים?

אם הקונסולה נקייה, ה־REST API מחזיר JSON תקין, וחצייה בינארית מלאה של תוספים ותבניות עדיין משאירה את העורך מת — התשובה כמעט תמיד יושבת ב־debug.log. הפעילו את WP_DEBUG_LOG, שחזרו את התקלה פעם אחת, והריצו את ה־fatal שיצא דרך מפענח לוג השגיאות. ה־stack trace מציין את הקובץ — התחילו משם.