Функция WP_GET_ATTACHMENT_IMAGE_SRC(): как использовать и примеры.

Функция WP_GET_ATTACHMENT_IMAGE_SRC()

Функция wp_get_attachment_image_src() позволяет получить массив данных для указанного изображения: URL, ширина и высота вложения (attachment image).

Примечание: Первый элемент массива используется для свойства src.

Если вам нужно просто получить URL вложения, используйте функцию wp_get_attachment_image_url().


Использование функции

Синтаксис

Функция вызывается следующим образом:

wp_get_attachment_image_src( $attachment_id, $size, $icon );

Параметры

  • $attachment_id (число) — обязательный. ID изображения, данные которого нужно получить.

  • $size (строка/массив) — размер изображения, данные которого вы хотите получить. Вы можете указать размер из стандартных размеров WordPress, таких как thumbnail, medium, large, full, или любой другой зарегистрированный размер. Также можно указать размер в виде массива из двух элементов (ширина, высота), например: array(32, 32). В этом случае будет выбран наиболее подходящий размер, и изображение будет уменьшено или растянуто до заданного размера.

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

  • $icon (логическое) — если установлено в true (1), то для не изображений будет показан медиа-значок (например, для файлов .zip, .rar и др.)

    По умолчанию: false


Возврат значения

Функция возвращает массив или false. Массив будет содержать следующие данные:

  • [0] => URL изображения
  • [1] => ширина изображения
  • [2] => высота изображения
  • [3] => является ли изображение промежуточным

Примеры использования

Простой пример

Давайте выведем HTML-код изображения вложения с ID=8:



Изменение директории значков

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

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

add_filter( 'icon_dir', 'my_theme_icon_directory' );
function my_theme_icon_directory( $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() была добавлена в версии 2.5.0.


Код функции

Функция определена в файле wp-includes/media.php:

function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon = false ) {
    $image = image_downsize( $attachment_id, $size );
    if ( ! $image ) {
        $src = false;

        if ( $icon ) {
            $src = wp_mime_type_icon( $attachment_id, '.svg' );

            if ( $src ) {
                $icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' );

                $src_file = $icon_dir . '/' . wp_basename( $src );

                list( $width, $height ) = wp_getimagesize( $src_file );

                $ext = strtolower( substr( $src_file, -4 ) );

                if ( '.svg' === $ext ) {
                    $width  = 48;
                    $height = 64;
                } else {
                    list( $width, $height ) = wp_getimagesize( $src_file );
                }
            }
        }
        if ( $src && $width && $height ) {
            $image = array( $src, $width, $height, false );
        }
    }

    return apply_filters( 'wp_get_attachment_image_src', $image, $attachment_id, $size, $icon );
}

Теперь вы понимаете, как использовать функцию wp_get_attachment_image_src() для получения данных изображений в WordPress. Если у вас возникнут дополнительные вопросы или вам нужна помощь, не стесняйтесь спрашивать!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *