ניפוי שגיאות (או בלועזית debugging) הינו תהליך בסיסי ובלתי נפרד בעבודה עם קוד, בין אם בתהליך הכתיבה ובין אם בתהליך ה-QA, כאמור וורדפרס מספקת לנו מספר כלים אשר יאפשרו לנו לבצע ניפוי שגיאות בצורה הטובה ביותר.

לרוב מפתחי תבניות ותוספי וורדפרס מכירים את WP_DEBUG אשר קיים בקובץ wp-config.php, שם הוא מוגדר בברירת מחדל כ-false אשר מתפרש בעצם למצב שוורדפרס לא תציג שגיאות או מידע חיוני על מנת להגן על בעל האתר.

הפעלת ניפוי שגיאות

בתור התחלה הדבר הכי בסיסי שיש לעשות הוא להפעיל את מצב ניפוי השגיאות, שלב זה הוא שלב מהיר וקליל אשר מצריך מאיתנו להיכנס לקובץ wp-config.php לחפש את הקוד הבא:

define( 'WP_DEBUG', false );

ולהחליף אותו בקוד הבא:

define( 'WP_DEBUG', true );

ניפוי שגיאות לקובץ

הרבה לא מכירים אך ניתן להפעיל את היכולת של וורדפרס לשמור את השגיאות שנוצרות לקובץ בשם debug.log אשר יושב בתיקיית wp-content. אפשרות זאת מאוד שימושית מכיוון שהיא מאפשרת לנו לעקוב אחרי היסטוריה של תקלות, בחינה של תקלות חוזרות, ומאפשרת לנו אפילו לבחון אילו תקלות התרחשו תוך כדי ביצוע קריאות AJAX.

על מנת להפעיל את האפשרות של שמירת שגיאות לקובץ, יש להוסיף את הקוד הבא לקובץ wp-config.php:

define( 'WP_DEBUG_LOG', true );

הצגת שגיאות על המסך

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

על מנת לכבות את מצב הדפסת השגיאות על המסך, יש להוסיף את הקוד הבא לקובץ wp-config.php:

define( 'WP_DEBUG_DISPLAY', false );

ניפוי שגיאות בקבצי JavaScript

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

חשוב להבין כי שורה זאת מתייחסת אך ורק לקבצי הליבה של וורדפרס ולא לקבצים של תבנית או של תוספים (אלא אם כן, מפתחי התבניות או התוסף השתמשו בקבוע (constant) זה על מנת להרחיב את "חווית ניפוי השגיאות".

על מנת להפעיל את מצב ניפוי השגיאות בקבצי הליבה, יש להוסיף את הקוד הבא לקובץ wp-config.php:

define( 'SCRIPT_DEBUG', true );

ניפוי שגיאות בשאילתות SQL

כאשר אנחנו עובדים על קוד או כאשר אנחנו מקבלים תוצאות אחרות ממה שאנחנו מצפים להם כאשר מדפדפים בדפי האתר, מומלץ להשתמש באופציה של ניפוי שגיאות בשאילתות SQL. שימוש באפשרות זאת שומרת את כל השאילתות אשר וורדפרס מבצעת במערך (array) אשר אותו ניתן להדפיס בעת הצורך.

על מנת להפעיל את מצב ניפוי השגיאות בשאילתות SQL, יש להוסיף את הקוד הבא לקובץ wp-config.php:

define( 'SAVEQUERIES', true );

כאשר אפשרות זאת מופעלת, וורדפרס שומרת את השאילתות במערך אשר אליו ניתן לגשת ע"י הדפסה של המשתנה $wpdb->queries.

סיכום

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

בהצלחה!

דור צוברי

מתכנת מגיל 13, ומתעסק עם וורדפרס מגיל 18, אוהב לפצח אתגרים ולפתח דברים מורכבים על בסיס וורדפרס. עצמאי מגיל 16, מרצה ובלוגר. בזמן הפנוי שלי אוהב מאוד לקרוא קומיקס של MARVEL.

דור צוברי

תגובות לפוסט

כתיבת תגובה

תגובה אחת

  1. רוב

    מאמר יפה
    השורות של
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );

    יצרו קובץ בלי להציג את השגיאות על המסך? זה יאפשר לדעת מה גורם לאתר להיתקע וליפול?
    כדאי להוסיף גם
    define( 'SCRIPT_DEBUG', true );
    define( 'SAVEQUERIES', true );
    ?

    1. מחבר
      דור צוברי

      היי רוב,
      תודה רבה, שמח לשמוע 🙂

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

  2. יעל

    תודה רבה על המאמר המועיל, אם יצרתי קובץ debug.log
    וזה הביא לי את השגיאה הזו לכל אורך הקובץ, איך עלי לסדר זאת ניסיתי להוריד קובץ חדש ולהחליפו בקיים אבל זה לא עזר
    השגיאה:
    [29-Oct-2018 21:01:34 UTC] PHP Notice: Trying to get property of non-object in /home/mfuxcoil/public_html/wp-includes/class-walker-nav-menu.php on line 222

    1. מחבר
      דור צוברי

      היי יעל,
      נראה שיש פה בעיה באחד מקבצי הליבה של WordPress, האם הגרסה הכי אחרונה מותקנת לך?