# 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. Она содержит объяснения ключевых терминов и упрощенные примеры, которые помогут лучше понять функционирование функции.