WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Авторские Темы для WordPress

wp_get_attachment_image_src() WP 2.5.0

Возвращает массив данных об указанной картинке: URL, ширина, высота картинки-вложения.

Заметка: первый (нулевой) элемент массива используйте для атрибута src.

C версии 4.4 появилась функция wp_get_attachment_image_url() - сразу возвращает URL, работает на основе этой функции.

Работает на основе: image_downsize()
1 раз — 0.003252 сек (очень медленно) | 50000 раз — 12.29 сек (медленно) | PHP 7.1.2, WP 4.7.5
Хуки из функции
Возвращает

Массив|false. Массив содержащий следующие данные:

[0] => url
[1] => width
[2] => height
[3] => is_intermediate

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

$src = wp_get_attachment_image_src( $attachment_id, $size, $icon );
$attachment_id(число) (обязательный)
ID вложения-картинки, данные которой нужно получить.
$size(строка/массив)

Размер картинки, данные о которой нужно получить. Отличаться будет ссылка. В этом параметре можно указывать предусмотренные в WordPress размеры (thumbnail, medium, large или full).

Так же можно указать размер в массиве в виде двух элементов (ширина, высота): array(32,32). В этом случае будет подобран наиболее подходящий размер из имеющихся, затем картинка будет сжата/растянута до указанных размеров. С версии 2.5. этот параметр не влияет на размер медиа иконок (иконок для файлов), они всегда показываются в оригинальном размере.

По умолчанию: 'thumbnail'

$icon(логический)
Ставим в true (1), чтобы показывать медиа-иконки для вложений не картинок (.zip, .rar и т.д.)
По умолчанию: false

Примеры

#1. Использование по умолчанию

Выведем html код картинки вложения с ID=8:

<?php
$attachment_id = 8; // ID вложения

$image_attributes = wp_get_attachment_image_src( $attachment_id );
// вернулся массив array
?> 

<img src="<?php echo $image_attributes[0] ?>" width="<?php echo $image_attributes[1] ?>" height="<?php echo $image_attributes[2] ?>">

#2. Изменение директории иконок

В WordPress для показа картинок для вложенных файлов (не картинок) используются специальные иконки. За такой показ отвечает параметр $icon в этой функции. Так, для вложений картинок выводится миниатюра, а для остальных файлов выводится соответствующая его типу икона. Например, для .mp3 файла будет показана картинка audio.jpg из папки: wp-includes/images/crystal/).

Этот пример показывает, как можно изменить раздел откуда будут браться такие медиа-иконки. Изменим директорию по умолчанию на папку темы: wp-content/themes/yourtheme/images (разумеется в эту папку нужно разместить картинки для разных типов файлов).

add_filter('icon_dir', 'my_theme_icon_dyrectory');
   function my_theme_icon_dyrectory($icon_dir) {
   return TEMPLATEPATH . '/images';
}
add_filter('icon_dir_uri', 'my_theme_icon_uri');
   function my_theme_icon_uri($icon_dir) {
   return get_bloginfo('stylesheet_directory').'/images';
}

Размещать этот код надо в файл темы functions.php

Список изменений

С версии 2.5.0 Введена.

Код wp_get_attachment_image_src() WP 5.7.2

<?php
function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon = false ) {
	// Get a thumbnail or intermediate image if there is one.
	$image = image_downsize( $attachment_id, $size );
	if ( ! $image ) {
		$src = false;

		if ( $icon ) {
			$src = wp_mime_type_icon( $attachment_id );

			if ( $src ) {
				/** This filter is documented in wp-includes/post.php */
				$icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' );

				$src_file               = $icon_dir . '/' . wp_basename( $src );
				list( $width, $height ) = wp_getimagesize( $src_file );
			}
		}

		if ( $src && $width && $height ) {
			$image = array( $src, $width, $height, false );
		}
	}
	/**
	 * Filters the attachment image source result.
	 *
	 * @since 4.3.0
	 *
	 * @param array|false  $image         {
	 *     Array of image data, or boolean false if no image is available.
	 *
	 *     @type string $0 Image source URL.
	 *     @type int    $1 Image width in pixels.
	 *     @type int    $2 Image height in pixels.
	 *     @type bool   $3 Whether the image is a resized image.
	 * }
	 * @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.
	 */
	return apply_filters( 'wp_get_attachment_image_src', $image, $attachment_id, $size, $icon );
}

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

Еще из тегов шаблона: Миниатюры Вложения

10 комментов
    Войти