wp_get_attachment_image_sizes()

Получает значение для атрибута "sizes" изображения-вложения
Функция WordPress
INT 4.4.0
WordPress Icon

Описание функции

Функция wp_get_attachment_image_sizes() используется для получения значения атрибута ‘sizes’ изображения вложения. Атрибут ‘sizes’ определяет доступные размеры изображения, которые могут быть использованы при отображении изображения на веб-странице.

Использование

wp_get_attachment_image_sizes( int $attachment_id, string|int[] $size = 'medium', array $image_meta = null ): string|false

Функция wp_get_attachment_image_sizes() принимает три параметра: $attachment_id, $size и $image_meta. Она возвращает строку с допустимым значением размера для использования в атрибуте ‘sizes’ или false, если значение не найдено.

  • $attachment_id (обязательный): Идентификатор вложения изображения.
  • $size (необязательный): Размер изображения. Принимает имя зарегистрированного размера изображения или массив значений ширины и высоты в пикселях (в указанном порядке). По умолчанию ‘medium’.
  • $image_meta (необязательный): Метаданные изображения, возвращаемые функцией ‘wp_get_attachment_metadata()’. По умолчанию null.

Функция возвращает допустимое значение размера для использования в атрибуте ‘sizes’ или false, если значение не найдено.

<?php
/**
 * Пример использования функции wp_get_attachment_image_sizes()
 */
$attachment_id = 123; // Идентификатор вложения изображения
$size = 'large'; // Размер изображения
$image_meta = wp_get_attachment_metadata( $attachment_id ); // Получение метаданных изображения
$sizes = wp_get_attachment_image_sizes( $attachment_id, $size, $image_meta );
if ( $sizes ) {
    echo 'Значение атрибута "sizes": ' . $sizes;
} else {
    echo 'Значение атрибута "sizes" не найдено.';
}
?>

В этом примере мы используем функцию wp_get_attachment_image_sizes() для получения значения атрибута ‘sizes’ изображения с идентификатором 123 и размером ‘large’. Мы также получаем метаданные изображения с помощью функции wp_get_attachment_metadata(). Затем мы выводим значение атрибута ‘sizes’, если оно найдено, или сообщение о том, что значение не найдено.

Примеры использования

Получение значения атрибута ‘sizes’ для изображения


/**
 * Retrieves the value for an image attachment’s ‘sizes’ attribute.
 *
 * @param int $attachment_id Required. Image attachment ID.
 * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of width and height values in pixels (in that order). Default 'medium'.
 * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. Default: null.
 * @return string|false A valid source size value for use in a 'sizes' attribute or false.
 */
function get_attachment_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
    $sizes = wp_get_attachment_image_sizes( $attachment_id, $size, $image_meta );
    return $sizes;
}
// Example usage
$attachment_id = 123;
$sizes = get_attachment_sizes( $attachment_id );
echo $sizes;

Результат:


"(max-width: 300px) 100vw, 300px"

Функция wp_get_attachment_image_sizes() возвращает значение атрибута ‘sizes’ для указанного изображения. В примере выше, функция get_attachment_sizes() принимает ID изображения и возвращает значение атрибута ‘sizes’ для него. Значение атрибута ‘sizes’ представляет собой строку, содержащую медиа-запрос и ширину изображения. В данном случае, значение атрибута ‘sizes’ равно «(max-width: 300px) 100vw, 300px», что означает, что изображение будет отображаться на экранах с максимальной шириной 300 пикселей, занимая 100% ширины экрана, и имея фиксированную ширину 300 пикселей.

Определение размера изображения


/**
 * Retrieves the value for an image attachment’s ‘sizes’ attribute.
 *
 * @param int $attachment_id Required. Image attachment ID.
 * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of width and height values in pixels (in that order). Default 'medium'.
 * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. Default: null.
 * @return string|false A valid source size value for use in a 'sizes' attribute or false.
 */
function get_attachment_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
    $sizes = wp_get_attachment_image_sizes( $attachment_id, $size, $image_meta );
    return $sizes;
}
// Example usage
$attachment_id = 123;
$size = array( 600, 400 );
$sizes = get_attachment_sizes( $attachment_id, $size );
echo $sizes;

Результат:


"(max-width: 600px) 100vw, 600px"

Функция wp_get_attachment_image_sizes() также позволяет определить размер изображения, указав массив с шириной и высотой в пикселях в качестве значения параметра $size. В примере выше, функция get_attachment_sizes() принимает ID изображения и массив с размером 600×400 пикселей и возвращает значение атрибута ‘sizes’ для него. Значение атрибута ‘sizes’ равно «(max-width: 600px) 100vw, 600px», что означает, что изображение будет отображаться на экранах с максимальной шириной 600 пикселей, занимая 100% ширины экрана, и имея фиксированную ширину 600 пикселей.

Использование регистрированных размеров изображений


/**
 * Retrieves the value for an image attachment’s ‘sizes’ attribute.
 *
 * @param int $attachment_id Required. Image attachment ID.
 * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of width and height values in pixels (in that order). Default 'medium'.
 * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. Default: null.
 * @return string|false A valid source size value for use in a 'sizes' attribute or false.
 */
function get_attachment_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
    $sizes = wp_get_attachment_image_sizes( $attachment_id, $size, $image_meta );
    return $sizes;
}
// Example usage
$attachment_id = 123;
$size = 'thumbnail';
$sizes = get_attachment_sizes( $attachment_id, $size );
echo $sizes;

Результат:


"(max-width: 150px) 100vw, 150px"

Функция wp_get_attachment_image_sizes() также позволяет использовать зарегистрированные размеры изображений в качестве значения параметра $size. В примере выше, функция get_attachment_sizes() принимает ID изображения и имя зарегистрированного размера изображения «thumbnail» и возвращает значение атрибута ‘sizes’ для него. Значение атрибута ‘sizes’ равно «(max-width: 150px) 100vw, 150px», что означает, что изображение будет отображаться на экранах с максимальной шириной 150 пикселей, занимая 100% ширины экрана, и имея фиксированную ширину 150 пикселей.

Получение значения ‘sizes’ атрибута для нескольких изображений


/**
 * Retrieves the value for an image attachment’s ‘sizes’ attribute.
 *
 * @param int $attachment_id Required. Image attachment ID.
 * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of width and height values in pixels (in that order). Default 'medium'.
 * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. Default: null.
 * @return string|false A valid source size value for use in a 'sizes' attribute or false.
 */
function get_attachment_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
    $sizes = wp_get_attachment_image_sizes( $attachment_id, $size, $image_meta );
    return $sizes;
}
// Example usage
$attachment_ids = array( 123, 456, 789 );
$size = 'large';
foreach ( $attachment_ids as $attachment_id ) {
    $sizes = get_attachment_sizes( $attachment_id, $size );
    echo $sizes . "n";
}

Результат:


"(max-width: 1024px) 100vw, 1024px"
"(max-width: 1024px) 100vw, 1024px"
"(max-width: 1024px) 100vw, 1024px"

Функция wp_get_attachment_image_sizes() также может быть использована для получения значения атрибута ‘sizes’ для нескольких изображений. В примере выше, функция get_attachment_sizes() принимает массив с ID изображений и имя зарегистрированного размера изображения «large» и возвращает значения атрибута ‘sizes’ для каждого изображения. Значения атрибута ‘sizes’ равны «(max-width: 1024px) 100vw, 1024px», что означает, что каждое изображение будет отображаться на экранах с максимальной шириной 1024 пикселей, занимая 100% ширины экрана, и имея фиксированную ширину 1024 пикселей.

Изменение значения ‘sizes’ атрибута для изображения


/**
 * Retrieves the value for an image attachment’s ‘sizes’ attribute.
 *
 * @param int $attachment_id Required. Image attachment ID.
 * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of width and height values in pixels (in that order). Default 'medium'.
 * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. Default: null.
 * @return string|false A valid source size value for use in a 'sizes' attribute or false.
 */
function get_attachment_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
    $sizes = wp_get_attachment_image_sizes( $attachment_id, $size, $image_meta );
    return $sizes;
}
// Example usage
$attachment_id = 123;
$size = 'medium';
$image_meta = array(
    'sizes' => array(
        'medium' => array(
            'file' => 'image-300x200.jpg',
            'width' => 300,
            'height' => 200,
            'mime-type' => 'image/jpeg',
        ),
        'large' => array(
            'file' => 'image-1024x768.jpg',
            'width' => 1024,
            'height' => 768,
            'mime-type' => 'image/jpeg',
        ),
    ),
);
$sizes = get_attachment_sizes( $attachment_id, $size, $image_meta );
echo $sizes;

Результат:


"(max-width: 300px) 100vw, 300px"

Функция wp_get_attachment_image_sizes() также может быть использована для изменения значения атрибута ‘sizes’ для изображения. В примере выше, функция get_attachment_sizes() принимает ID изображения, имя зарегистрированного размера изображения «medium» и массив с метаданными изображения, включая размеры изображений. Значение атрибута ‘sizes’ равно «(max-width: 300px) 100vw, 300px», что означает, что изображение будет отображаться на экранах с максимальной шириной 300 пикселей, занимая 100% ширины экрана, и имея фиксированную ширину 300 пикселей.

Вопросы и ответы

Как получить значение атрибута ‘sizes’ для вложения изображения?

Для получения значения атрибута ‘sizes’ для вложения изображения в WordPress, можно использовать функцию wp_get_attachment_image_sizes(). Эта функция принимает три параметра: $attachment_id, $size и $image_meta.

Параметр $attachment_id является обязательным и представляет собой идентификатор вложения изображения.

Параметр $size является необязательным и определяет размер изображения. Он может принимать имя зарегистрированного размера изображения или массив значений ширины и высоты в пикселях. По умолчанию используется размер ‘medium’.

Параметр $image_meta является необязательным и представляет собой метаданные изображения, полученные с помощью функции wp_get_attachment_metadata(). По умолчанию он равен null.

Функция wp_get_attachment_image_sizes() возвращает строку с допустимым значением размера для использования в атрибуте ‘sizes’ или false, если значение не может быть получено.

Как изменить размер изображения, возвращаемый функцией wp_get_attachment_image_sizes()?

Для изменения размера изображения, возвращаемого функцией wp_get_attachment_image_sizes(), можно использовать фильтр wp_get_attachment_image_sizes. Этот фильтр позволяет изменить массив размеров изображения, возвращаемый функцией.

Пример использования фильтра:


function custom_image_sizes( $sizes, $attachment_id, $size ) {
    // Изменяем размер 'medium' на 'large'
    if ( $size === 'medium' ) {
        $sizes['medium'] = array(
            'width'  => 1024,
            'height' => 768,
            'crop'   => false,
        );
    }
    return $sizes;
}
add_filter( 'wp_get_attachment_image_sizes', 'custom_image_sizes', 10, 3 );

В приведенном примере мы изменяем размер ‘medium’ на размер ‘large’ с шириной 1024 пикселя и высотой 768 пикселей без обрезки.

Таким образом, с помощью фильтра wp_get_attachment_image_sizes можно изменить размеры изображения, возвращаемые функцией wp_get_attachment_image_sizes() в WordPress.

Как добавить новый размер изображения для использования в функции wp_get_attachment_image_sizes()?

Чтобы добавить новый размер изображения для использования в функции wp_get_attachment_image_sizes(), необходимо использовать хук add_image_size(). Этот хук позволяет зарегистрировать новый размер изображения с указанием его имени и параметров ширины и высоты.


add_image_size( 'custom-size', 800, 600 );

В приведенном примере мы регистрируем новый размер изображения с именем «custom-size» и шириной 800 пикселей и высотой 600 пикселей.

Как использовать массив значений ширины и высоты в пикселях вместо зарегистрированного имени размера изображения в функции wp_get_attachment_image_sizes()?

Для использования массива значений ширины и высоты в пикселях вместо зарегистрированного имени размера изображения в функции wp_get_attachment_image_sizes(), необходимо передать этот массив в качестве параметра $size.


$size = array( 800, 600 );
$image_sizes = wp_get_attachment_image_sizes( $attachment_id, $size );

В приведенном примере мы передаем массив значений ширины и высоты в пикселях (800 и 600 соответственно) в качестве параметра $size функции wp_get_attachment_image_sizes(). Результатом будет строка, содержащая значение размера изображения для использования в атрибуте ‘sizes’ или false, если размер не найден.

Как проверить, существует ли изображение с заданным ID в функции wp_get_attachment_image_sizes()?

Для проверки существования изображения с заданным ID в функции wp_get_attachment_image_sizes() можно использовать функцию wp_attachment_is_image(). Эта функция возвращает true, если изображение существует, и false в противном случае.


if ( wp_attachment_is_image( $attachment_id ) ) {
    // Изображение существует
} else {
    // Изображение не существует
}

Функция wp_get_attachment_image_sizes() позволяет получить значение атрибута ‘sizes’ для вложенного изображения. С помощью хука add_image_size() можно добавить новый размер изображения для использования в этой функции. Также можно использовать массив значений ширины и высоты в пикселях вместо зарегистрированного имени размера. Для проверки существования изображения можно использовать функцию wp_attachment_is_image().

Связанные элементы

  • Функция wp_get_attachment_image_srcset(): возвращает атрибут srcset для изображения вложения.
  • Функция wp_get_attachment_image(): возвращает HTML-код для отображения изображения вложения.
  • Функция wp_get_attachment_image_url(): возвращает URL изображения вложения.
  • Хук wp_get_attachment_image_attributes: позволяет изменить атрибуты изображения, возвращаемые функцией wp_get_attachment_image.
  • Хук wp_get_attachment_image_src: позволяет изменить URL и размеры изображения, возвращаемые функцией wp_get_attachment_image.
  • Класс WP_Image_Editor: предоставляет методы для редактирования изображений, включая изменение размеров, обрезку, поворот и т. д.
  • Класс WP_Image_Editor_Imagick: расширяет класс WP_Image_Editor и предоставляет дополнительные методы для редактирования изображений с использованием библиотеки Imagick.
  • Класс WP_Image_Editor_GD: расширяет класс WP_Image_Editor и предоставляет дополнительные методы для редактирования изображений с использованием библиотеки GD.
Обсуждение