wp_get_attachment_image() WP 2.5.0

Отримує <img> тег зображення вказаного вкладення (прикріпленого до посту файла).

Якщо вкладення не вдалося знайти, буде повернено порожній рядок.

Якщо вкладення є картинкою, то їй буде повернуто код, відповідний зазначеному розміру (див. параметр $size).

Для прикріплених файлів типу відмінного від картинок (.zip, .xls, .flv) буде повернуто відповідна цьому типу іконка (автоматично визначається WordPress). За замовчуванням така іконка не виводиться, щоб вона виводилася, потрібно виставити 3-й параметр ($icon) в true.

Працює на основі:
wp_get_attachment_image_src()
Основа для:
get_the_post_thumbnail()

Повертає

Строку. 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' => 'назва картинки',
	'alt' => 'alt картинки',
	'srcset' => '',
	'sizes' => '',
)

alt за замовчуванням береться з даних вкладення:

'alt' => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) )

Приклади

0

#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) картинки.

0

#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')).

0

#3 Вкажемо атрибути alt і title для зображення

$params = [ 'alt' => 'alt картинки', 'title' => 'назва картинки' ]

$tag = wp_get_attachment_image( 15108, 'medium', false, $params);

Отримаємо:

<img width="588" height="216"
 src="https://wp-doc.com/wp-content/uploads/2022/09/clipboard-image-122190.png"
 class="attachment-medium size-medium"
 alt="alt картинки"
 loading="lazy"
 title="назва картинки" />

список змін

З версії 2.5.0Введено.
З версії 4.4.0$srcset and $ sizes attributes були added.
З версії 5.5.0$loading attribute був added.

Код wp_get_attachment_image() WP 6.0.2

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;

		$ Attachment = get_post ($ Attachment_id);
		$ hwstring = image_hwstring ($ width, $ height);
		$size_class = $size;

		if ( is_array( $size_class ) ) {
			$size_class = implode( 'x', $size_class );
		}

		$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 ) ) ),
		);

		// Add `loading` attribute.
		if ( wp_lazy_loading_enabled( 'img', 'wp_get_attachment_image' ) ) {
			$default_attr['loading'] = wp_get_loading_attr_default( 'wp_get_attachment_image' );
		}

		$ attr = wp_parse_args ($ attr, $ default_attr);

		// If the default value of `lazy` for the `loading` attribute is overridden
		// для того, щоб розмістити його для цього зображення, не може бути включений.
		if ( array_key_exists( 'loading', $attr ) && ! $attr['loading'] ) {
			unset($attr['loading']);
		}

		// 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 List of attachment image attributes.
		 *
		 * @ Since 2.8.0
		 *
		 * @param string[] $attr Array of attribute values ​​for image markup, keyed by attribute name.
		 * See wp_get_attachment_image().
		 * @param WP_Post $attachment Image attachment post.
		 * @param string|int[] $size Requested image size. Can be any registered image size name, or
		 * an array of width and height values ​​in pixels (in that order).
		 */
		$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. = '/>';
	}

	/**
	 * HTML img element representing an image attachment.
	 *
	 * @ Since 5.6.0
	 *
	 * @param string $html HTML img element або empty string on failure.
	 * @param int $attachment_id Image attachment ID.
	 * @param string|int[] $size Requested image size. Can be any registered image size name, or
	 * an array of width and height values ​​in pixels (in that order).
	 * @param bool $icon Whether the image should be treated as an icon.
	 * @param string[] $attr Array of attribute values ​​for image markup, keyed by attribute name.
	 * See wp_get_attachment_image().
	 */
	return apply_filters( 'wp_get_attachment_image', $html, $attachment_id, $size, $icon, $attr );
}