WP_GET_ATTACHMENT_METADATA() Function: Get Metadata for Attachment ID

WP_GET_ATTACHMENT_METADATA() │ WP 2.1.0

Функция wp_get_attachment_metadata() позволяет получить метаданные для вложения по его ID.

Применение

Эта функция используется в других функциях:

  • wp_maybe_generate_attachment_metadata()
  • wp_get_original_image_path()
  • image_get_intermediate_size()

Скорость выполнения

  • Выполнение 1 раз — 0.000745 секунды (медленно)
  • Выполнение 50000 раз — 1.22 секунды (быстро)
  • Версия PHP: 7.0.8, WordPress: 4.6

Хуки

Используется хук: wp_get_attachment_metadata

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

Функция возвращает массив или false. Если произошла ошибк��, возвращает false.

Синтаксис

wp_get_attachment_metadata( $attachment_id, $unfiltered );

Параметры:

  • $attachment_id (int) — ID вложения. По умолчанию используется глобальная переменная $post.
  • $unfiltered (bool) — Если true, фильтры не будут применяться. По умолчанию false.

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

Пример 1: Получение метаданных вложения (изображение)

Получим метаданные для вложения с ID 656 (например, картинка):

$array = wp_get_attachment_metadata( 656 );

В результате переменная $array будет содержать примерно следующие данные (в зависимости от типа вложения):

Array
(
    [width] => 356
    [height] => 299
    [file] => 2011/05/dinamic-archives.png
    [sizes] => Array
        (
            [thumbnail] => Array
                (
                    [file] => dinamic-archives-80x80.png
                    [width] => 80
                    [height] => 80
                    [mime-type] => image/png
                )
            [medium] => Array
                (
                    [file] => dinamic-archives-120x100.png
                    [width] => 120
                    [height] => 100
                    [mime-type] => image/png
                )
        )
    [image_meta] => Array
        (
            [aperture] => 0
            [credit] => 
            [camera] => 
             => 
            [created_timestamp] => 0
            [copyright] => 
            [focal_length] => 0
            [iso] => 0
            [shutter_speed] => 0
            [title] => 
        )
)

Чтобы вывести размеры изображения, можно использовать следующий код:

$meta = wp_get_attachment_metadata( 656 );

if ( $meta ) {
    echo $meta['width'] .'x'. $meta['height']; //> 356x299
}

Пример 2: Получение метаданных вложения (видео)

Получим метаданные для вложения с ID 95 (например, видео):

$array = wp_get_attachment_metadata( 95 );

В результате переменная $array будет содержать примерно следующие данные:

Array
(
    [filesize] => 61429114
    [mime_type] => video/mp4
    [length] => 1375
    [length_formatted] => 22:55
    [width] => 1280
    [height] => 720
    [fileformat] => mp4
    [dataformat] => quicktime
     => Array
        (
            [dataformat] => mp4
            [codec] => ISO/IEC 14496-3 AAC
            [sample_rate] => 44100
            [channels] => 2
            [bits_per_sample] => 16
            [lossless] => 
            [channelmode] => stereo
        )
    [created_timestamp] => 1538981268
)

Пример 3: Получение полного URL загруженного файла изображения

Обратите внимание, что при вызове wp_get_attachment_metadata(), индекс file возвращает относительный путь к файлу вложения.

Если вы хотите получить полный URL для ссылки, вы можете использовать следующий код:

$attachment_metadata = wp_get_attachment_metadata( $attachment_id );

$upload_url = wp_upload_dir()['url'];
$file_rel_path = $attachment_metadata['sizes']['medium_large']['file'];

echo "{$upload_url}/{$file_rel_path}";

Изменения

  • С версии 2.1.0 — функция была введена.
  • С версии 6.0.0 — добавлено значение $filesize в возвращаемый массив.

Код функции WP_GET_ATTACHMENT_METADATA()

function wp_get_attachment_metadata( $attachment_id = 0, $unfiltered = false ) {
    $attachment_id = (int) $attachment_id;

    if ( ! $attachment_id ) {
        $post = get_post();

        if ( ! $post ) {
            return false;
        }

        $attachment_id = $post->ID;
    }

    $data = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );

    if ( ! $data ) {
        return false;
    }

    if ( $unfiltered ) {
        return $data;
    }

    /**
     * Фильтрует метаданные вложения.
     *
     * @since 2.1.0
     *
     * @param array $data          Массив метаданных для данного вложения.
     * @param int   $attachment_id ID поста вложения.
     */
    return apply_filters( 'wp_get_attachment_metadata', $data, $attachment_id );
}

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

  • delete_post_meta_by_key()
  • wp_generate_attachment_metadata()
  • wp_maybe_generate_attachment_metadata()
  • wp_read_audio_metadata()
  • wp_update_attachment_metadata()

Leave a Reply

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