למה תיקיית ההעלאות של וורדפרס כל כך גדולה
תיקיית ההעלאות של וורדפרס גדולה כי וורדפרס אף פעם לא שומר קובץ אחד לכל תמונה. כל העלאה יוצרת מערך קבוע של עותקים בגדלים שונים לצד הקובץ המקורי.
פורסם
תיקיית ההעלאות של וורדפרס גדולה כי וורדפרס אף פעם לא שומר קובץ אחד לכל תמונה. כל העלאה מפעילה יצירה של מערך קבוע של עותקים בגדלים שונים לצד המקור — שבעה כאלה לתמונה בגודל של מצלמה רגילה, עוד לפני שתבנית או תוסף כלשהו מוסיפים עוד. שום דבר לא פגום; אתם פשוט רואים את ההכפלה שקורית בכל העלאה בודדת. הפתרון הוא להפסיק לייצר את הגדלים שאתם ממילא לא מגישים, ואז לחולל מחדש כך שהעותקים הישנים יימחקו מהדיסק.
עושים את החשבון
העלו תמונת JPEG אחת בגודל 4000×3000 ותציצו בתוך /wp-content/uploads/2026/07/. לא תמצאו שם קובץ אחד. תמצאו את אלה:
photo.jpg— המקור, ללא שינויphoto-scaled.jpg— עותק בגודל 2560px שוורדפרס מגיש במקום המקורphoto-150x150.jpg—thumbnailphoto-300x225.jpg—mediumphoto-768x576.jpg—medium_largephoto-1024x768.jpg—largephoto-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. פער גדול אומר קבצים יתומים מתבנית ישנה או מפוסטים שנמחקו — לא הליבה, ולא משהו שעוד חילול מחדש יתקן. פער קטן אומר שהחשבון הוא פשוט מה שהוא: שבעה קבצים ומעלה לכל העלאה, עובדים בדיוק כפי שתוכננו.