忽略一张特定图像的 max_srcset_image_width 过滤器

Ignore max_srcset_image_width filter for one particular image

我已将 wp_get_attachment_image_srcset() 输出的图像大小限制为 768 像素(默认情况下它们限制为 1600 像素):

function set_max_srcset_image_width( $max_srcset_image_width, $sizes_array ) {
    return 768;
}
add_filter( 'max_srcset_image_width', 'set_max_srcset_image_width', 10, 2 );

但是,我有一张图片,我想恢复到默认的最大 1600。

由于 max_srcset_image_width 过滤器不包含任何额外的参数来识别图像或您可能想要覆盖最大尺寸的事实,我不知道该怎么做。目前,这意味着要么我所有的图片尺寸都太大,要么我的其中一张图片太小。

查看@Joe McGill 的贡献here

 function custom_max_srcset_image_width( $max_width, $size_array ) {

      $width = $size_array[0];

      if ( $width <= 640 ) { //Aribitrary - Change to meet your needs
        $max_width = 1600;
        return $max_width;
      }else{
        return 768;
     }

  add_filter( 'max_srcset_image_width', 'custom_max_srcset_image_width', 10, 2 );

我按如下方式解决了这个问题:

// Limit srcset images to 768 pixels
function set_max_srcset_image_width( $max_srcset_image_width, $sizes_array ) {
    return 768;
}
add_filter( 'max_srcset_image_width', 'set_max_srcset_image_width', 10, 2 );

然后当我有一张图片,我想在其中包含 1,600 版本并忽略最大 768 版本时,我这样做了:

<img srcset="<?php echo wp_get_attachment_image_srcset( $attachment_id, 'large' ); ?>" />

其中 large 是 1600 像素版本。

我永远无法弄清楚 wp_get_attachment_image_srcset() 中的第二个参数是干什么用的,因为它似乎从未限制函数输出最大或最小尺寸。但是,在此处的示例中,它可以满足我的要求。