Генерирует метаданные для картинки-вложения и создает промежуточные копии изображения - миниатюры всех зарегистрированных размеров.
Промежуточные размеры указываются в «Настройках медиафайлов» (миниатюра, средний, большой), также они могут быть созданы функцией add_image_size() в теме или плагине.
Функция не обновляет метаданные вложения, а только создает их и все нужные размеры картинок. Обычно после работы функции, нужно еще обновить метаданные с помощью wp_update_attachment_metadata().
Функция обновляет метаполе записи _thumbnail_id связанные с миниатюрой записи.
Эту функцию можно использовать, чтобы пересоздать миниатюру картинки-вложения и все её промежуточные размеры, после того, как размеры были изменены в «Настройках медиафайлов». Но эта функция не удаляет уже созданные промежуточные размеры, а создает новые в дополнении к имеющимся.
Миниатюра и промежуточные размеры картинки, и элемент массива ["sizes"] возвращается функцией, только в случае, когда создаваемый размер меньше оригинального размера картинки, в других случаях промежуточный размер просто не создается.
Функция не определена во фронт-энде, поэтому для использования, например, в шорткоде, вам нужно подключить её, добавив такую строку в код:
#2 Загрузим вложение на сервер и добавим его к записи.
Рабочий пример, показывает как можно загрузить картинку в папку uploads, прикрепить её к записи 37 и создать миниатюру и все промежуточные размеры этой картинки.
// файл должен находиться в директории загрузок WP.
$filename = '/path/to/uploads/2013/03/filname.jpg';
// ID поста, к которому прикрепим вложение.
$parent_post_id = 37;
// Проверим тип поста, который мы будем использовать в поле 'post_mime_type'.
$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 );
// Подключим нужный файл, если он еще не подключен
// wp_generate_attachment_metadata() зависит от этого файла.
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
The $filesize value was added to the returned array.
Код wp_generate_attachment_metadata() wp generate attachment metadata WP 6.5.2