חיפוש ]

כיצד לשלוט על גודל התמונות בוורדפרס (Image Sizes)

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

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

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

אך אינכם רוצים להגיע למצב בו אתם יוצרים תמונות בוורדפרס לשווא:

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

גדלי תמונות ברירת המחדל בוורדפרס

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

קביעת גודל תמונות ברירת מחדל בוורדפרס

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

function sv_unset_image_sizes( $def_sizes) {
	unset( $def_sizes['thumbnail']); // turn off thumbnail size
	unset( $def_sizes['medium']); // turn off medium size
	unset( $def_sizes['large']); // turn off large size
	return $def_sizes;
}

add_filter('intermediate_image_sizes', 'sv_unset_image_sizes');

איך להשתמש בגודל התמונות שוורדפרס יוצרת באתר?

קיימות שתי אפשרויות לעשות זאת:

א. דרך ממשק הניהול של וורדפרס

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

שימוש בגודל התמונות שוורדפרס יוצרת

ב. באמצעות קוד

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

  • get_the_post_thumbnail
  • the_post_thumbnail
  • wp_get_attachment_image_src

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

the_post_thumbnail('large');

כיצד ליצור גדלים של תמונות משלכם?

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

שלב 1: שימוש בפונקציה add_image_size

הוסיפו את הקוד הבא לקובץ functions.php:

function savvy_setup_images() {
	add_image_size( 'my-image-size-name', 244, 344, true );
}
add_action( 'after_setup_theme', 'savvy_setup_images' );

כאשר לפונקציה add_image_size קיימים מספר פרמטרים כברשימה הבאה:

  • השם שאתם בוחרים לגודל התמונה החדש (my-image-size-name).
  • רוחב התמונה (244px).
  • גובה התמונה (344px).
  • חיתוך התמונה (Crop) – ניתן להגדיר פה או משתנה boolean או array, כאשר false קובע שהתמונה לא תחתך כלל ו true קובע כי התמונה תחתך למרכז כברירת מחדל.

שלב שני: הוספת גודל התמונה החדש לספריית המדיה

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

function sv_new_image_sizes($sizes) {
	$addsizes = array(
		"my-image-size-name" => 'My New Size'
	);
	$newsizes = array_merge($sizes, $addsizes);
	return $newsizes;
}
add_filter('image_size_names_choose', 'sv_new_image_sizes');

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

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


כיצד ליצור מחדש את גדלי התמונות לאחר שינוי?

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

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

תוכלו להשתמש בתוספים כגון Ajax Thumbnail Rebuild או Force Regenerate Thumbnail שעושים את העבודה מצויין ויחסכו לכם לא מעט זמן בתהליך.


כיצד ניתן להפטר מגדלים מיותרים של תמונות?

נאמר ובאתר הוורדפרס שלכם ישנם 10 סוגי תוכן מותאמים (Custom Post Types) כאשר כל אחד מהם משתמש ב 2-3 גדלים שונים של תמונות בעמודי האתר. בקלות תוכלו להגיע למצב בו וורדפרס מייצרת בין 20-30 תמונות בגדלים שונים על כל תמונה שתעלו!

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

function sv_reduce_image_sizes( $sizes ){
	/*
	 * $sizes - all image sizes array Array ( [0] => thumbnail [1] => medium [2] => large [3] => post-thumbnail )
	 * get_post_type() to get post type
	 */
	$type = get_post_type($_REQUEST['post_id']); // $_REQUEST['post_id'] post id the image uploads to

	foreach( $sizes as $key => $value ){

		/*
		 * use switch if there are a lot of post types
		 */
		if( $type == 'page' ) {
			if( $value == 'image-size-name-1' ){ // turn off 'image-size-name-1' for pages
				unset( $sizes[$key] );
			}
		} else if ( $type == 'portfolio' ) {
			if( !in_array( $value, array('image-size-name-2','image-size-name-3') ) ){ // for regions turn off everything except 'image-size-name-2' and 'image-size-name-3'
				unset( $sizes[$key] );
			}
		} else {
			if( $value != 'thumbnail' ){ // turn off everything except thumbnail
				unset( $sizes[$key] );
			}
		}
	}
	return $sizes;
}

add_filter( 'intermediate_image_sizes', 'sv_reduce_image_sizes' );

טיפ – איך ניתן לראות את גדלי התמונות שהתבנית והתוספים שלכם מייצרים?

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

<h4>Registered Images Sizes</h4>
<?php
print '<pre>';
  global $_wp_additional_image_sizes;
  print_r( $_wp_additional_image_sizes );
print '</pre>';
?>

לסיכום

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

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

  • לאה 20 מרץ 2018, 20:03

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

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

  • אלון 22 מרץ 2018, 16:37

    מה לגבי יצירה של גודל תמונה ל- page tempalte ספציפי, אני לא הצלחתי למצוא פתרון, יש לך משהו מעניין?

    פסוט מעולה כרגיל..

    • רועי יוסף 22 מרץ 2018, 16:54

      תודה אלון 🙂

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

  • נעמה 12 אפריל 2020, 23:16

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

    • רועי יוסף 13 אפריל 2020, 8:29

      היי נעמה,

      בצעי חיפוש בגוגל ותגיעי לאתר אאא המוכר את הפונט הזה…

  • רומק 7 יוני 2020, 17:37

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

    • רועי יוסף 7 יוני 2020, 19:24

      היי רומק,

      וורדפרס מורידה באופן אוטומטי את איכות התמונות לטובת זמן טעינה מהיר יותר. הוסף את הקוד הבא לקובץ functions.php של התבנית שלך בכדי ששמירה של תמונות בפורמט JPEG תהיה באיכות המקורית:

      add_filter('jpeg_quality', function($arg){return 100;});
      • רועי יוסף 7 יוני 2020, 19:25

        תאלץ להעלות מחדש את התמונות בכדי לראות תוצאה…

        • רומק 8 יוני 2020, 0:05

          אויי לא! מדובר במאות תמונות.
          הכוונה היא להעלות את התמונות מחדש רק לספרית המדיה או לכל פוסט בנפרד.

  • רומק 8 יוני 2020, 0:01

    תודה רבה רועי!

  • שמעון חדידה 14 יולי 2020, 16:54

    איך מבטלים את הורדת איכות התמונה? כל פעם שאני מעלה תמונה וורדפרס מוריד לה את האיכות.
    יש דרך למנוע את זה?

    • רועי יוסף 14 יולי 2020, 20:37

      היי שמעון,

      ראשית הוסף את הקוד הבא ל functions.php:

      /** JPEG Image Quality Filter */
      add_filter( 'jpeg_quality', 'my_jpeg_quality' );
      function my_jpeg_quality( $arg ) {
          return 100;
      }

      שנית, בדוק כי ImageMagick extension מותקן בשרת. תוכל לאחר מכן להשתמש בתוסף הבא בכדי לדאוג שוורדפרס תשתמש ב extension המדובר:

      https://wordpress.org/plugins/imagemagick-engine/

      בהצלחה!

  • אווה 10 אוגוסט 2020, 19:24

    האם אפשר לשאול שאלה על אלמנטור?

  • סיון סיסו 9 אוקטובר 2020, 18:19

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

  • סיון סיסו 10 אוקטובר 2020, 11:57

    היי רועי,
    זו הודעת השגיאה, האם זה מה שהתכוונת? לא רשום HTTP…
    עיבוד תמונה לאחר-העלאה נכשל. הדבר נובע ככל הנראה מכיוון שהשרת תפוס או שאין לו מספיק משאבים. העלאת תמונה קטנה יותר עשויה לעזור. הגודל המקסימלי המוצע הוא 2500 פיקסלים.
    תודה!

  • רועי יוסף 10 אוקטובר 2020, 14:37

    הבנתי,

    אם יש לך גישת FTP, הוסיפי את השורה הבאה לקובץ wp-config.php ונסי שוב:

    define( 'WP_MEMORY_LIMIT', '256M' );

    שימי לב להוסיף אותה בדיוק לפני השורה הבאה:

    /* That's all, stop editing! Happy publishing. */
    • סיון סיסו 11 אוקטובר 2020, 16:46

      רועי המון תודה, זה עבד!

    • ארין 12 אוקטובר 2020, 16:43

      היי רועי,

      נתקלתי באותה השגיאה בזמן העלאת תמונות.. יש לי איך לפתור את זה במידה ואני לא מתעסקת בקוד, פשוט מקימה אתר באלמנטור? תודה רבה!

      • רועי יוסף 12 אוקטובר 2020, 16:47

        היי ארין,

        הפתרון הוא אותו פתרון – בקשי ממישהו בקבוצות וורדפרס לעזור לך להוסיף את שורת הקוד ובטוח מישהו יתנדב.

  • שמעון חדידה 11 אוקטובר 2020, 16:59

    ואם מדובר על תמונות png?

    • רועי יוסף 11 אוקטובר 2020, 17:01

      באיזה הקשר? כל הנאמר בפוסט רלוונטי גם לקבצי PNG…

  • ברוריה סקלי 21 נובמבר 2020, 11:58

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

    • רועי יוסף 21 נובמבר 2020, 23:45

      היי ברורויה,

      את יכולה לפרט? שיניתי את צבע הטקסט – אולי הבעיה נפתרה?

  • רלי לילוז קרסו 5 אוקטובר 2021, 14:23

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

    • רועי יוסף 5 אוקטובר 2021, 14:25

      היי רלי 🙂

      שלחי לי לינק לעמוד באתר שלך עם גלריה ואומר לך מה צריך לעשות….

      • רלי לילוז קרסו 2 פברואר 2022, 18:35

        היי רועי. זה הקישור למשל: https://creative-shop.co.il/logos, אם יש לך פתרון זה ממש יעזור לי 🙂

  • אייל 1 נובמבר 2021, 9:07

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

    השאלה האם יש דרך קלה להתפטר מעשרות עותקים של כל תמונה שנוצרו בעבר שרת, להשאיר עותק אחד לדוגמה את הכי גדול, ואחר-כך ליצור רק עוד 2 הנדרשים…

  • חיים 2 פברואר 2022, 13:35

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

    • רועי יוסף 2 פברואר 2022, 13:38

      היי חיים,

      אני לא בטוח שאני מבין את השאלה. אתה מדבר על הגודל של תמונות המוצר? אם כן אז זה לגמרי בהתאם לתבנית בה אתה משתמש.

      • חיים 2 פברואר 2022, 17:29

        כן התכוונתי לתמונת מוצר . ואני משתמש ב canva

  • יעל שיינברגר 18 אפריל 2023, 2:08

    היי רציתי לשאול למה כשאני מעלה תמונות לאתר הן יוצאות מטושטש על אף שהתמונות ברורות לגמרי במקורי?

    • רועי יוסף 18 אפריל 2023, 11:29

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

תגובה חדשה

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

Savvy WordPress Development