WP_GENERATE_ATTACHMENT_METADATA() – генерация метаданных для вложений изображений

# WP_GENERATE_ATTACHMENT_METADATA() │ WP 2.1.0

Функция wp_generate_attachment_metadata() генерирует метаданные для вложений изображений (например, миниатюры), которые загружены в WordPress.

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

Эта функция использует данные из функции get_intermediate_image_sizes().

### Основные функции, использующие данную функцию

- wp_maybe_generate_attachment_metadata()
- media_handle_sideload()

## Хуки функции

- attachment_thumbnail_args
- fallback_intermediate_image_sizes
- wp_generate_attachment_metadata

## Возвращаемое значение

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

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

```php
wp_generate_attachment_metadata( $attachment_id, $file );

Где:

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

Пример 1: Генерация метаданных для вложения

Предположим, у нас есть вложение с ID 75, и изображение уже загружено в папку uploads. Давайте создадим все его промежуточные размеры.

// Подключаем необходимые функции для обработки изображений.
require_once ABSPATH . 'wp-admin/includes/image.php';

$attach_id = 75;
$file = 'var/www/example.com/wp-content/uploads/2016/06/wordpress1.jpg';

$metadata = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $metadata );

Теперь переменная $metadata будет содержать следующий массив:

Array
(
    [width] => 574
    [height] => 159
    [file] => 2016/06/wordpress1.jpg
    [sizes] => Array
        (
            [thumbnail] => Array
                (
                    [file] => wordpress1-80x80.jpg
                    [width] => 80
                    [height] => 80
                    [mime-type] => image/jpeg
                )

            [medium] => Array
                (
                    [file] => wordpress1-120x33.jpg
                    [width] => 120
                    [height] => 33
                    [mime-type] => image/jpeg
                )

        )

    [image_meta] => Array
        (
            [aperture] => 0
            [credit] => 
            [camera] => 
            [created_timestamp] => 0
            [copyright] => 
            [focal_length] => 0
            [iso] => 0
            [shutter_speed] => 0
            [title] => 
            [orientation] => 0
            [keywords] => Array
                (
                )

        )

)

Пример 2: Добавление уже загруженного файла в медиа-библиотеку и создание вложения

Этот пример демонстрирует, как можно загрузить изображение в папку uploads, прикрепить его к посту с ID 37 и создать миниатюру и все промежуточные размеры этого изображения.

// Файл должен находиться в директории WP uploads (медиа).
$filename = '/path/to/uploads/2013/03/filename.jpg';

// ID поста, к которому мы прикрепляем вложение.
$parent_post_id = 37;

// Проверяем тип файла.
$filetype = wp_check_filetype( basename( $filename ), null );

// Получаем путь к директории загрузок.
$wp_upload_dir = wp_upload_dir();

// Подготавливаем массив с необходимыми данными для вложения.
$attachment = array(
    'guid'           => $wp_upload_dir['url'] . '/' . basename( $filename ), 
    'post_mime_type' => $filetype['type'],
    'post_title'     => preg_replace( '/.[^.]+$/', '', basename( $filename ) ),
    'post_content'   => '',
    'post_status'    => 'inherit'
);

// Вставляем пост в базу данных.
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );

// Подключаем функции для обработки изображений.
require_once ABSPATH . 'wp-admin/includes/image.php';

// Создаем метаданные для вложения и обновляем пост в базе данных.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );

Изменения в версии

  • С версии 2.1.0: Функция была введена.
  • С версии 6.0.0: Добавлен параметр $filesize в возвращаемый массив.
  • С версии 6.7.0: Поддерживается MIME-тип 'image/heic'.

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

  • delete_post_meta_by_key()
  • wp_get_attachment_metadata()
  • wp_maybe_generate_attachment_metadata()
  • wp_read_audio_metadata()
  • wp_update_attachment_metadata()

Данная версия статьи более понятная и доступная для начинающих пользователей WordPress. Она содержит объяснения ключевых терминов и упрощенные примеры, которые помогут лучше понять функционирование функции.

Leave a Reply

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