How can the global content width affect the thumbnail ? ------------------------------------------------ Let's check how the global `$content_width` can affect the `the_post_thumbnail( 'large' )` and trace out the relevant functions dependency: the_post_thumbnail() \ \__ get_the_post_thumbnail() \ \__ wp_get_attachment_image() \ \__ wp_get_attachment_image_src() \ \__ image_downsize() \ \__ image_constrain_size_for_editor() and for the *large* size we have specifically this part within the `image_constrain_size_for_editor()`: elseif ( $size == 'large' ) { /* * We're inserting a large size image into the editor. If it's a really * big image we'll scale it down to fit reasonably within the editor * itself, and within the theme's content width if it's known. The user * can resize it in the editor if they wish. */ $max_width = intval(get_option('large_size_w')); $max_height = intval(get_option('large_size_h')); if ( intval($content_width) > 0 ) { $max_width = min( intval($content_width), $max_width ); } } Here we can see that the *maximum image width* is the **minimum** of the *large image size width* and the *global content width*. This affects e.g. the image *width*, *height* and *sizes* attributes. For example the *sizes* attribute value comes from: \__ wp_get_attachment_image() \ \__ wp_get_attachment_image_src() \ \__ wp_calculate_image_sizes() where the default value is: // Setup the default 'sizes' attribute. $sizes = sprintf( '(max-width: %1$dpx) 100vw, %1$dpx', $width ); within the `wp_calculate_image_sizes()` function. Here the `$width` is taken from the `wp_get_attachment_image_src()` output, that depends on the `content width` as we saw earlier. This should explain why you get: (max-width: 560px) 100vw, 560px since `560 = min( 560, 1024 )` is the maximum image width. Workaround ---------- One way around that is to change the maximum image width/height through the `editor_max_image_size` filter: // Add a filter callback to avoid the content width restriction add_filter( 'editor_max_image_size', 'wpse_max_image_size', 10, 3 ); // Display large thumbnail the_post_thumbnail( 'large' ); // Remove filter callback remove_filter( 'editor_max_image_size', 'wpse_max_image_size', 10 ); where we define the `wpse_max_image_size()` callback as (PHP 5.4+): function wpse_max_image_size( $max_image_size, $size, $context ) { // Override content width restriction if( 'large' === $size ) { $max_image_size = [ $max_width = intval( get_option( 'large_size_w' ) ), $max_height = intval( get_option( 'large_size_h' ) ) ]; } return $max_image_size; } We fetch the *large* image size dimensions from the database, since I guess you modified the width from `1024` to `980` through the *Settings > Media* screen. Notes ----- Another option would be to use the `wp_calculate_image_sizes`, but then we would still have to handle the width/height image attributes. This should also be possible through the `wp_get_attachment_image_attributes` filter. It should also be possible to modify temporarily the global content width, but I avoided that here.