Игнорировать фильтр max_srcset_image_width для одного конкретного изображения - PullRequest
0 голосов
/ 30 октября 2018

Размеры выводимых изображений ограничены 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 не содержит каких-либо дополнительных аргументов для идентификации изображения или того факта, что вы можете переопределить максимальный размер, я не могу понять, как это сделать. На данный момент это означает, что либо все мои изображения имеют слишком большой размер, либо одно из моих изображений слишком маленькое.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я решил это следующим образом:

// 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 );

Затем, когда у меня есть изображение, в которое я хочу включить версию 1600 и игнорировать максимум 768, я сделал это:

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

Где large - версия с разрешением 1600 пикселей.

Я никогда не мог понять, для чего нужен второй параметр в wp_get_attachment_image_srcset(), потому что он никогда не ограничивал функцию выводом максимального или минимального размера. Однако в приведенном здесь примере он делает то, что я хочу.

0 голосов
/ 30 октября 2018

Смотрите вклад @Джо МакГилла здесь

 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 );
...