WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

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
Хуки из функции:
Возвращает

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

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

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

$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

Код wp get attachment image src: wp-includes/media.php WP 4.8

<?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 ) ) {
			/** 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 ) = getimagesize( $src_file );
		}

		if ( $src && $width && $height ) {
			$image = array( $src, $width, $height );
		}
	}
	/**
	 * Filters the image src result.
	 *
	 * @since 4.3.0
	 *
	 * @param array|false  $image         Either array with src, width & height, icon src, or false.
	 * @param int          $attachment_id Image attachment ID.
	 * @param string|array $size          Size of image. Image size or array of width and height values
	 *                                    (in that order). Default 'thumbnail'.
	 * @param bool         $icon          Whether the image should be treated as an icon. Default false.
	 */
	return apply_filters( 'wp_get_attachment_image_src', $image, $attachment_id, $size, $icon );
}

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

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

wp_get_attachment_image_src 12 комментариев
Полезные 1 Вопросы 1 Все
  • Влад
    @

    Подскажите существует ли функция возвращающая массив данных с атрибутами картинок таких как title="" alt="" ?

    Ответить2.7 года назад #
    • Kama4457

      get_children() с помощью этой функции можно получить все данные картинок вложений...

      1
      Ответить2.6 года назад #
      • Юрий cайт: top-tour.lviv.ua
        @

        А можно пример как использовать get_children() для получения alt картинки которая просто приатачена к посту?

        Ответить2.2 года назад #
        • Юрий cайт: top-tour.lviv.ua
          @

          Использую такой код для вывода галереи, хочу добавить тег title но его нужно откуда-то вытянуть.

          function gallerysingle($args = array())
          {
          
          	$get_posts_args = array(
          	"post_parent"    => get_the_ID(),
          	"what_to_show"=>"posts",
          
          	"post_type"=>"attachment",
          	"orderby"=>"RAND",
          	"order"=>"RAND",
          	"showposts"=>30,
          	"post_mime_type"=>"image/jpeg,image/jpg,image/gif,image/png");
          	$posts = get_posts($get_posts_args);
          
          	$image_id = get_post_thumbnail_id();
            $image_url = wp_get_attachment_image_src($image_id,'thumbnail-size', true);       
          	foreach ($posts as $post)
          	{
          		$parent = get_post($post->post_parent);
          		if(($imgsrc = wp_get_attachment_image($post->ID,'delivery-thumb')) 
          				&& ($imglink= wp_get_attachment_image_src($post->ID,'full'))
          				&& $parent->post_status == "publish"
          				&& $image_url[0] != $imglink[0])
          		{
          			echo  "<a href='" . $imglink[0] . "' rel="nofollow">".$imgsrc."</a>" ;          
          		}
          	}
          }
          Ответить2.2 года назад #
        • Татьяна

          Я нашла вариант попроще smile
          глядите ссылку
          Второй ответ начиная с: $img = wp_prepare_attachment_for_js($id);

          1
          Ответить2 года назад #
  • wp-admin cайт: wp-admin.com.ua
    @

    Как вывести картинку в другом размере если есть url на том же сайте.

    Ситуация:
    В произвольном поле находится url картинки, которая больше чем нужно на вывод, на сайте. Как вывести картинку в другом размере по ее url.

    Ответить2.6 года назад #
    • Kama4457

      Можно установить мой плагин http://wp-kama.ru/id_142/kama-thumbnail.html и создавать миниатюры картинок любого размера налету.

      Или аналог создание миниатюр налету средствами WordPress: http://wp-kama.ru/function/wp_get_image_editor но тут желательно сохранять картинку куда-то, чтобы не ресайзить каждый раз...

      Или можно получить ID картинки по URL: http://wp-kama.ru/function/url_to_postid но это не самый быстрый способ, его не рекомендую.

      Вообще, по URL получить картинку не самый быстрый и правильный способ, нужно по ID или по URL но при этом добавить в запрос ID родителя (поста) к которому картинка прикреплена...

      Еще интересно откуда у вас УРЛ картинки в произвольном поле? Картинка находится в медиатеке WP?

      1
      Ответить2.6 года назад #
  • campusboy1712 cайт: wp-plus.ru
    @

    Сейчас занимаюсь изучением микроразметки schema.org и пригодилась данная функция. Пример создания галереи из прикрепленных к записи изображений в шаблоне single.php:

    <?php
     $attachments_query = array( 'post_type' => 'attachment', 'posts_per_page' => -1, 'post_status' => null, 'post_parent' => $post->ID );
     $attachments_post = get_posts( $attachments_query );
     if ( !empty($attachments_post) ): ?>
       <div class="mod-thumbnails-full">
    	 <?php foreach ( $attachments_post as $attachment ): ?>
    	   <div class="item-medium" itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
    		<?php $img_attr_medium = wp_get_attachment_image_src( $attachment->ID, 'medium' ); ?>
    		<img itemprop="url" src="<?php echo esc_url( $img_attr_medium[0] ); ?>" alt="<?php echo esc_attr( $attachment->post_title ); ?>">
    		<meta itemprop="width" content="<?php echo (int)$img_attr_medium[1]; ?>">
    		<meta itemprop="height" content="<?php echo (int)$img_attr_medium[2]; ?>">
    	  </div>
    	 <?php endforeach; ?>
       </div>
    <?php endif; ?>
    1
    Ответитьгод назад #
  • Анастасия
    @

    Может кому пригодится!

    // ссылка
    <?php $thumb_id = get_post_thumbnail_id(); $thumb_url = wp_get_attachment_image_src($thumb_id,'thumbnail', true); echo $thumb_url[0]; ?>
    
    // width
    <?php $thumb_id = get_post_thumbnail_id(); $image_attributes = wp_get_attachment_image_src($thumb_id,'thumbnail', true); echo $image_attributes[1]; ?>
    
    // height
    <?php $thumb_id = get_post_thumbnail_id(); $image_attributes = wp_get_attachment_image_src($thumb_id,'thumbnail', true); echo $image_attributes[2]; ?>
    5
  • Доброго времени.

    Подскажите, существует ли функция, которая получает все залитые изображения? Хочу создать галерею, изображения для которой будут браться не из постов, а прямо из папки Upload.

    Спасибо.

    Ответитьмесяц назад #
  • Давид
    @

    Кто может помочь! как мне сделать чтоб страница post автоматически не отображал картинку . картинки отображаются некрасиво. как будто неправильно конвертирует, мало пикселей на большом фотография

    Ответить10 дней назад #

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

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