Описание image_save_pre
— Filter
Хук image_save_pre позволяет изменить данные изображения перед его сохранением в библиотеке медиа WordPress. Он срабатывает сразу после загрузки изображения и перед его сохранением в базу данных, предоставляя возможность модифицировать изображение или его метаданные
Примеры использования
Пример изменения имени файла изображения перед его сохранением:
add_filter('image_save_pre', function($image) {
$path_info = pathinfo($image);
$new_name = 'custom_' . $path_info['filename'] . '.' . $path_info['extension'];
$new_path = $path_info['dirname'] . '/' . $new_name;
rename($image, $new_path);
return $new_path;
});
В этом примере мы изменяем имя загружаемого изображения, добавляя префикс ‘custom_’ к его имени
Пример изменения формата изображения перед его сохранением:
add_filter('image_save_pre', function($image) {
$image_type = wp_check_filetype($image);
if ($image_type['ext'] === 'png') {
$image = str_replace('.png', '.jpg', $image);
}
return $image;
});
Здесь мы изменяем формат изображения с PNG на JPG перед его сохранением
Пример добавления метаданных к изображению перед его сохранением:
add_filter('image_save_pre', function($image) {
$metadata = wp_read_image_metadata($image);
$metadata['custom_key'] = 'custom_value';
update_post_meta($image_id, '_wp_attachment_metadata', $metadata);
return $image;
});
В этом примере мы добавляем пользовательские метаданные к изображению перед его сохранением
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо изменить изображение или его метаданные перед сохранением в библиотеке медиа WordPress
– Производительность
Поскольку хук работает с изображениями, следите за тем, чтобы изменения не вызывали задержек в загрузке медиафайлов
– Предупреждения
Убедитесь, что изменения не нарушают целостность загружаемых изображений и их метаданных
Альтернативы
Тип: filter
Этот хук позволяет изменить данные файла перед его загрузкой, включая валидацию и изменение метаданных
Используйте его, если необходимо произвести изменения до загрузки, а не после