wp_get_attachment_image()
Получает <img>
тег картинки указанного вложения (прикрепленного к посту файла).
Если вложение не удалось найти, то будет возвращена пустая строка.
Если вложение является картинкой, то для нее будет возвращен код, соответствующий указанному размеру (см. параметр $size).
Для прикрепленных файлов типа отличного от картинок (.zip, .xls, .flv) будет возвращена соответствующая этому типу иконка (автоматически определяется WordPress). По умолчанию такая иконка не выводится, чтобы она выводилась нужно выставить 3-й параметр ($icon) в true.
Хуки из функции
wp_get_attachment_image_attributes
Возвращает
Строку. HTML код картинки в <img>
тега.
Использование
$img = wp_get_attachment_image( $attachment_id, $size, $icon, $attr );
$attachment_id(число) (обязательный)
ID вложения, картинку которого нужно получить.
$size(строка/массив)
Размер картинки. Можно указать в виде:
-
- Строки thumbnail, medium, large, full или название имеющегося размера
- В виде массива из 2-х элементов, определяющих размеры сторон выводимой картинки: array(32,32).
Указание размеров через массив не уменьшает картинку физически, она уменьшается только визуально из наиболее подходящей готовой миниатюры (uploads).
Указание размеров не влияет на размеры выводимых иконок для файлов, они всегда выводятся в оригинальном размере (32х32).
Вместо использования массива, иногда логично зарегистрировать новый размер картинок (add_image_size()) и использовать его наряду с уже установленными (thumbnail, medium, large или full). Такой подход более эффективен, так как нет нужды постоянно проверять какой размер из имеющихся подходил лучше.
По умолчанию: «thumbnail»
$icon(логический)
Использовать ли медиа иконки, для представления вложения. По умолчанию, для вложений типа файл (не картинок), иконка выводится не будет, если нужно выводить иконки для таких типов вложений выставите этот параметр в true.
По умолчанию: false
$attr(массив)
Любые атрибуты для тега <img>
в массиве. Например:
array(
'class' => 'foo bar',
'title' => 'название картинки',
)
Примеры
#1. Выведем готовую для HTML картинку
Выведем картинку <img>
среднего размера прикрепленного файла-картинки 651:
<?php echo wp_get_attachment_image( 651, 'medium'); ?>
Выведет примерно такой HTML:
<img width="250" height="250" src="http://example.com/image-250x250.png" class="attachment-medium size-medium" alt="Текст из поля Alt Text" />
alt текст будет заполнен, только если он указан для вложения в специальном поле (alt text). В alt не попадает текст из заголовка (title), описания (description) или подписи (caption) картинки…
#2. Пример с указанием произвольного размера
Выведем картинку указанного размера 20х20 пикселей, для вложений типа «картинка» и соответствующую иконку для остальных типов вложений (3-й параметр):
<?php echo wp_get_attachment_image( $post->ID, array(20,20), true); ?>
$post->ID — динамическая передача ID внутри цикла. Создать такой цикл можно, использовав функцию get_posts() (get_posts(‘post_type=attachment’)).
Код wp get attachment image: wp-includes/media.php
WP 5.3
function wp_get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = false, $attr = '' ) {
$html = '';
$image = wp_get_attachment_image_src( $attachment_id, $size, $icon );
if ( $image ) {
list($src, $width, $height) = $image;
$hwstring = image_hwstring( $width, $height );
$size_class = $size;
if ( is_array( $size_class ) ) {
$size_class = join( 'x', $size_class );
}
$attachment = get_post( $attachment_id );
$default_attr = array(
'src' => $src,
'class' => "attachment-$size_class size-$size_class",
'alt' => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ),
);
$attr = wp_parse_args( $attr, $default_attr );
// Generate 'srcset' and 'sizes' if not already present.
if ( empty( $attr['srcset'] ) ) {
$image_meta = wp_get_attachment_metadata( $attachment_id );
if ( is_array( $image_meta ) ) {
$size_array = array( absint( $width ), absint( $height ) );
$srcset = wp_calculate_image_srcset( $size_array, $src, $image_meta, $attachment_id );
$sizes = wp_calculate_image_sizes( $size_array, $src, $image_meta, $attachment_id );
if ( $srcset && ( $sizes || ! empty( $attr['sizes'] ) ) ) {
$attr['srcset'] = $srcset;
if ( empty( $attr['sizes'] ) ) {
$attr['sizes'] = $sizes;
}
}
}
}
/**
* Filters the list of attachment image attributes.
*
* @since 2.8.0
*
* @param array $attr Attributes for the image markup.
* @param WP_Post $attachment Image attachment post.
* @param string|array $size Requested size. Image size or array of width and height values
* (in that order). Default 'thumbnail'.
*/
$attr = apply_filters( 'wp_get_attachment_image_attributes', $attr, $attachment, $size );
$attr = array_map( 'esc_attr', $attr );
$html = rtrim( "<img $hwstring" );
foreach ( $attr as $name => $value ) {
$html .= " $name=" . '"' . $value . '"';
}
$html .= ' />';
}
return $html;
}
источник: https://wp-kama.ru/function/wp_get_attachment_image