WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

wp_get_attachment_image() WP 2.5.0

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

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

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

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

Является основой для: get_custom_logo(), get_the_post_thumbnail()
Работает на основе: wp_get_attachment_image_src()

Хуков нет.

Возвращает

Строку. 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://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 VER 5.0.1

<?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вязанные функции

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

Еще из тегов шаблона: Записи: посты, страницы, ...

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

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

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

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

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

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

    Ответить3.3 года назад #
  • Дмитрий 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/

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

    Ответить2.6 года назад #
Здравствуйте, !     Войти . Зарегистрироваться