These are the reserved image size names recognized by WordPress: ‘thumb’, ‘thumbnail’, ‘medium’, ‘medium_large’, ‘large’, and ‘post-thumbnail’.
The names “thumb” & “thumbnail” are just aliases- they are exactly the same.
For a detailed explanation and “why”, read further inside the image_downsize() article.
However, if needed, you can always set the options yourself:
update_option( 'thumbnail_size_w', 160 );
update_option( 'thumbnail_size_h', 160 );
update_option( 'thumbnail_crop', 1 );
Set the image size by resizing the image proportionally (without distorting it):
add_image_size( 'custom-size', 220, 180 ); // 220 pixels wide by 180 pixels tall, soft proportional crop mode
Set the image size by cropping the image (not showing part of it):
add_image_size( 'custom-size', 220, 180, true ); // 220 pixels wide by 180 pixels tall, hard crop mode
Set the image size by cropping the image and defining a crop position:
add_image_size( 'custom-size', 220, 220, array( 'left', 'top' ) ); // Hard crop left top
When setting a crop position, the first value in the array is the x axis crop position, the second is the y axis crop position.
- x_crop_position accepts ‘left’ ‘center’, or ‘right’.
- y_crop_position accepts ‘top’, ‘center’, or ‘bottom’.
By default, these values default to ‘center’ when using hard crop mode.
You can find examples of the various crop types here.
Now that you’ve defined some custom image sizes, there are a variety of ways that you can use them.
For Featured Images
To use your custom image sizes for a post’s featured image, you can use the_post_thumbnail() in the appropriate theme template file…
Note: To enable featured images the current theme must include add_theme_support( ‘post-thumbnails’ ); in its functions.php file. See also Post Thumbnails.
if ( has_post_thumbnail() ) {
the_post_thumbnail( 'your-custom-size' );
}
You can also make your custom sizes selectable from your WordPress admin. To do so, you have to use the image_size_names_choose hook to assign them a normal, human-readable name…
add_filter( 'image_size_names_choose', 'my_custom_sizes' );
function my_custom_sizes( $sizes ) {
return array_merge( $sizes, array(
'your-custom-size' => __( 'Your Custom Size Name' ),
) );
}
You can output images (by size) directly from the WordPress Media Library using PHP as well. To do this, simply use wp_get_attachment_image().
// Assuming your Media Library image has a post id of 42...
echo wp_get_attachment_image( 42, 'your-custom-size' );
Note: If you just want the image URL instead of a pre-built tag, you can use wp_get_attachment_image_src() instead.
Using the ‘false’ setting will fail to produce a new image in the upload directory if one of the image dimensions of the uploaded image are equal to the new image size.
If a registered image size is removed from functions.php, then any image uploaded before that point and then deleted from the media library afterwards, does not have those auto-generated sizes deleted too. Only image sizes that exist in functions.php are deleted.
Although height and width are not required parameters, their default values (0) will lead to unwanted behavior, so bear in mind that you should always define them. Use a value of 9999 to define the other dimension as the one to be considered when image resize is executed.
In a theme’s
functions.php
file. Always use the “after_setup_theme” action hook.In addition to the Regenerate Thumbnails plugins, there’s also a WP-CLI command:
wp media regenerate
. See https://wp-cli.org/commands/media/regenerate/ orwp help regenerate media
for details.After you have add new sizes WordPress has to regenerate the images.
Best plugin to do that: https://wordpress.org/plugins/regenerate-thumbnails/
The section “Reserved Image Size Names” hints at it but doesn’t explicitly point out that you can also customise the medium and large sizes via code by using these option names:
medium_size_h
: The medium size height.medium_size_w
: The medium size width.large_size_h
: The large size height.large_size_w
: The large size width.So for example, to set the large height to 700px you would use this code:
Note that along
thumbnail
,medium
,large
, there is also a size built into wordpress that you can use :full
to get the image at its original dimensions.Related
remove_image_size()
has_post_thumbnail()
the_post_thumbnail()
get_post_thumbnail_id()
get_the_post_thumbnail()
set_post_thumbnail_size()
NOTE THIS:
If
add_image_size()
still doesn’t work even after regenerating thumbnails, make sure thatadd_theme_support( 'post-thumbnails' )
is loaded beforeadd_image_size()
Example:
If you upload an image whose dimensions match the
add_image_size()
when crop is set totrue
, in the$meta
object accessed by thewp_generate_attachment_metadata
filter, that matching image size will not be available. Also, image sizes that have larger dimensions than an uploaded photo will not be available either.(Thus if you are using a technique to create something like a monochrome derivative image, you won’t be able to get it to work if the uploaded image is exactly the same size as the image size you’re using for your black and white version).
Default settings for image size (see /wp-admin/includes/schema.php):
'thumbnail_size_w' => 150,
'thumbnail_size_h' => 150,
'medium_size_w' => 300,
'medium_size_h' => 300,
'medium_large_size_w' => 768,
'medium_large_size_h' => 0,
'large_size_w' => 1024,
'large_size_h' => 1024,
You can change these option values in WordPress > Admin > Settings > Media (/wp-admin/options-media.php).
Use
get_intermediate_image_sizes()
to get the current settings for predefined as well as custom image sizes.Note that if you would like your custom image sizes to be available in the admin, for example when choosing an image size for the Media & Text block, use the filter: image_size_names_choose
Example:
Since WordPress 5.3, two additional image sizes are added:
1536×1536
2048×2048
These are also their names.
For additional information, check wp-includes/media.php
Let us suppose that a master theme set in functions.php a size, let us say ‘a_size’. and that the functions.php in a child theme uses again this function to add the same size but with different value. It is not clear from this page if the old size is changed or the call is ignored or forbidden.
The cropping behavior cited as 2) in Description, https://developer.wordpress.org/reference/functions/add_image_size/#description, is *not* currently supported. Please see the ticket at https://core.trac.wordpress.org/ticket/40370 for more information.