דילוג לתוכן
תמונות ומדיה

למה תיקיית ההעלאות של וורדפרס כל כך גדולה

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

פורסם

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

עושים את החשבון

העלו תמונת JPEG אחת בגודל 4000×3000 ותציצו בתוך /wp-content/uploads/2026/07/. לא תמצאו שם קובץ אחד. תמצאו את אלה:

  • photo.jpg — המקור, ללא שינוי
  • photo-scaled.jpg — עותק בגודל 2560px שוורדפרס מגיש במקום המקור
  • photo-150x150.jpgthumbnail
  • photo-300x225.jpgmedium
  • photo-768x576.jpgmedium_large
  • photo-1024x768.jpglarge
  • photo-1536x1152.jpg — ה־medium_large בכפולה של 2×
  • photo-2048x1536.jpg — ה־large בכפולה של 2×

זה המקור בתוספת שבעה נגזרים, מהליבה בלבד. העלאה של 3 MB יכולה לנחות כ־5–6 MB על הדיסק עוד לפני שתוסף אחד רץ. עכשיו הוסיפו תבנית שרושמת ארבעה גדלים משלה וגם ווקומרס (עוד שלושה), והעלאה אחת הופכת לארבעה־עשר או חמישה־עשר קבצים. הכפילו במאגר של כמה אלפי תמונות ומשקל התיקייה מפסיק להיות תעלומה.

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

למה זה קורה

כשאתם מעלים, wp_generate_attachment_metadata() קורא ל־wp_create_image_subsizes(), שרץ בלולאה על כל גודל שמחזירה get_intermediate_image_sizes() וכותב קובץ לכל גודל שהמקור גדול מספיק כדי לייצר. הליבה רושמת את thumbnail, medium, medium_large, large, בתוספת גדלי הרטינה 1536x1536 ו־2048x2048 שנוספו ב־WP 5.3. כל תבנית או תוסף שקוראים ל־add_image_size() מוסיפים לאותה לולאה — לצמיתות, עבור כל העלאה עתידית.

הקובץ -scaled מגיע ממנגנון נפרד: הפילטר big_image_size_threshold, שברירת המחדל שלו היא 2560px. כל דבר רחב יותר מקבל עותק מוקטן שהופך לתמונה ה”מלאה” שמוגשת, בעוד המקור נשאר על הדיסק. כך שהעלאה גדולה שומרת גם את המקור הענק וגם את הגרסה בגודל 2560px.

תוכלו לראות בדיוק מה ההגדרות שלכם מייצרות עבור תמונה נתונה בעזרת כלי בדיקת גדלי התמונות.

איך מתקנים את זה, לפי הסדר

1. מודדים לפני שנוגעים בכלום. ניחושים מבזבזים זמן. משורש האתר:

du -sh wp-content/uploads
find wp-content/uploads -type f \( -name '*.jpg' -o -name '*.webp' -o -name '*.png' \) | wc -l
du -ah wp-content/uploads | sort -rh | head -20

2. מבטלים רישום של הגדלים שאתם לא מגישים. רוב התבניות אף פעם לא מוציאות את הגדלים 1536 ו־2048, והרבה אף פעם לא משתמשות ב־medium_large. הורידו אותם:

// functions.php — stop generating sizes this site never outputs
add_action( 'init', function () {
    remove_image_size( '1536x1536' );
    remove_image_size( '2048x2048' );
} );

// Drop medium_large too, if your theme doesn't use the 768px size
add_filter( 'intermediate_image_sizes_advanced', function ( $sizes ) {
    unset( $sizes['medium_large'] );
    return $sizes;
} );

3. מחוללים מחדש כדי למחוק את העותקים הישנים. ביטול הרישום רק עוצר את הייצור העתידי — הקבצים שכבר על הדיסק נשארים עד שתחוללו מחדש:

wp media regenerate --yes

גרסאות WP-CLI עדכניות מוחקות תוך כדי ריצה קבצים של גדלים שכבר לא רשומים. אם אתם משתמשים בתוסף Regenerate Thumbnails במקום זאת, סמנו את האפשרות “delete unregistered sizes” שלו — בלי שהתיבה הזו מסומנת, הקבצים הישנים נשארים.

4. מחפשים קבצים יתומים. החלפת תבנית אף פעם לא מנקה את הגדלים שהתבנית הישנה רשמה. גם מחיקת פוסטים לא תמיד מסירה את הנגזרים שלהם. אחרי שלב 3, אם du -sh עדיין הרבה מעל מה שהמחשבון חוזה, יש לכם יתומים — קבצים על הדיסק שאף קובץ מצורף לא מפנה אליהם.

מה לא לעשות

אל תכבו את התמונות המוקטנות כדי “לחסוך מקום”. הקובץ -scaled קטן מהמקור שלכם. כיבוי של big_image_size_threshold לא מוחק כלום — הוא פשוט גורם לוורדפרס להגיש לכל מבקר את המקור המלא במשקל של כמה מגה־בייט. זו החלטה של רוחב פס ואיכות, לא ניקוי אחסון, ולרוב היא רק מחמירה את משקל העמוד. הכלי לביטול תמונות מוקטנות מסביר מתי זה באמת הצעד הנכון; צמצום משקל תיקיית ההעלאות אינו אחד מהמקרים האלה.

אל תמחקו קבצים ישירות מ־uploads דרך SFTP. רשימת תת־הגדלים של כל קובץ מצורף חיה בתוך ה־_wp_attachment_metadata שלו. מחיקת קבצים ביד משאירה הפניות שבורות, וחילול מחדש לא יכול לבנות מחדש גודל אם הסרתם את המקור שממנו הוא נגזר. מחקו את המקור והתמונה הזו הלכה לתמיד.

אל תגדירו thumbnail/medium/large ל־0 בהגדרות ← מדיה מתוך ציפייה שהתיקייה תצטמצם. איפוס של גודל עוצר ייצור עתידי אך לא נוגע בכלום שכבר על הדיסק, והממשק לא מגיע ל־medium_large, 1536, 2048, או לכל גודל של תבנית/תוסף — הם פשוט לא שם.

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

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

אם התיקייה עדיין גדולה מהצפוי אחרי החילול מחדש, הריצו את מימדי התמונה האמיתיים שלכם ואת הגדלים הרשומים דרך מחשבון האחסון והשוו את המספר שלו ל־du -sh wp-content/uploads. פער גדול אומר קבצים יתומים מתבנית ישנה או מפוסטים שנמחקו — לא הליבה, ולא משהו שעוד חילול מחדש יתקן. פער קטן אומר שהחשבון הוא פשוט מה שהוא: שבעה קבצים ומעלה לכל העלאה, עובדים בדיוק כפי שתוכננו.

FAQ

שאלות

למה WordPress יוצר כל כך הרבה עותקים של כל תמונה שאני מעלה?

בכל העלאה נוצר מערך קבוע של עותקים בגדלים שונים. קובץ JPEG בגודל 4000x3000 נוחת כמקור בתוספת שבעה קבצים מהליבה בלבד: -scaled, thumbnail, medium, medium_large, large ושני גדלי הרטינה. הוסיפו תבנית ו-WooCommerce, והעלאה אחת הופכת לארבעה-עשר או חמישה-עשר קבצים.

מה זו הגרסה עם -scaled של התמונה שלי ב-WordPress?

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

איך עוצרים את WordPress מלייצר גדלי תמונה שאני אף פעם לא משתמש בהם?

מבטלים את רישומם בקובץ functions.php בעזרת remove_image_size עבור 1536x1536 ו-2048x2048, ומסירים את medium_large דרך הפילטר intermediate_image_sizes_advanced. זה עוצר רק העלאות עתידיות, אז הריצו אחר כך wp media regenerate --yes כדי למחוק את העותקים שכבר יושבים על הדיסק.

אפשר למחוק קבצים מ-wp-content/uploads דרך FTP כדי לפנות מקום?

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

האם הגדרת גדלי התמונות ל-0 במסך הגדרות ← מדיה מקטינה את תיקיית ההעלאות?

לא. איפוס של thumbnail, medium או large עוצר ייצור עתידי אבל לא נוגע בשום דבר שכבר יושב על הדיסק. מסך הגדרות ← מדיה גם לא מגיע אל medium_large, 1536, 2048, או אל כל גודל שתבנית או תוסף רשמו, ולכן רוב הקבצים נשארים בדיוק במקומם.