WordPress как на ладони
wordpress jino

wp_get_attachment_image() WP 2.5.0

Возвращает картинку указанного вложения (прикрепленного к посту файла). Картинка возвращается в теге <img>.

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

Если вложение является картинкой, то для нее будет возвращен код, соответствующий указанному размеру (см. параметр $size).

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

Используется в: get_custom_logo().
Работает на основе: wp_get_attachment_image_src()
Хуки из функции:
Возвращает

Строку. HTML код картинки в <img> тега.

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

$img = wp_get_attachment_image( $attachment_id, $size, $icon );
$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://site.ru/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 4.9

<?php
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;
}

Cвязанные функции

Из раздела: Картинки

wp_get_attachment_image 7 комментариев
  • Алексей cайт: biznesidohod.ru @

    Все конечно интересно. Но вот вопрос если я нажимаю на картинку то попадаю на страницу заголовок и картинка.А вторым нажатием на уже картинка увеличивается за счет плагина. А как сделать что бы при нажатии с первого раза попадал на увеличение картинки ведь плагин у меня установлен. Для скриншотов я имею ввиду

    Ответить5 лет назад #
    • campusboy1946 cайт: www.youtube.com/c/wpplus

      Когда вставляете в пост картинку, то указываете "Ссылка -> Страница вложения", а надо "Ссылка -> Медиафайл".

      2
      Ответить2.7 года назад #
  • Сашка cайт: остекление-балконов-к...

    У меня вопрос, а можно к данной картинке прикрепить определенный класс и задать стиль вывода картинки на экран

    Ответить2.2 года назад #
  • Дмитрий cайт: cka-spb.ru

    Добрый день! У меня магазин на Woocommerce. Для вывода картинок простого товара в составе сгруппированного использую этот код:

    add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );
    
    function woocommerce_grouped_product_thumbnail( $product ) {
    	$image_size = array( 300, 300 );  // array( width, height ) image size in pixel  
    	$attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    	?>
    	<td class="label">
    		<?php echo wp_get_attachment_image( $attachment_id, $image_size ); ?>
    	</td>
    	<?php
    }

    Всё работает http://www.alkomprof.ru/tovar/kollektsiya-plitki-elegant-25h40-proizvodstvo-vitra-turtsiya/

    Как мне сделать так, чтобы эти маленькие картинки стали кликабельны, чтобы нажав на них картинка стала большой?

    Ответить1.5 года назад #

Здравствуйте, !

Ваш комментарий