[РЕШЕНО] PNG to JPG 3. — Автоматическое редактирование базы данных
1 нужно узнать кто пишет инфу в БД это делает
/wp-admin/includes/image.php
2 функция которая заведует редактированием и отбором размеров
wp_generate_attachment_metadata()
3 с функцией определился вот результат - нужно просто вручную добавить условия в нужное место
if ( ! is_wp_error( $editor ) )
$metadata['sizes'] = $editor->multi_resize( $sizes );
} else {
$metadata['sizes'] = array();
}
/* ---- kolshix for "PNG to JPG" ----
// add original PNG in databese image "_wp_attachment_metadata"
// call original image PNG <?php echo wp_get_attachment_image_url( $id, 'png_original' ) ?>
// у плагина должна стоять настройка автоматической подмены файлов PNG на JPG
// также должна стоять настройка сохранения оригинала PNG
// возьмем (адррес + файл) и зменим расширение на PNG
// если формат GIF TIF BMP - то они не пройдут проверку расширения - и база данных будет не тронута
// если файл JPG то он войдет в правило замены но не пройдет правило наличия файла PNG - которого нет, а значит база будет не тронута
// Когда грузите PNG - все будет отлично и он прайдет все правила
*/
$file_png = preg_replace("/\.jpg$/", ".png", $file);
$results_path_parts = pathinfo($file);
$results_extension = $results_path_parts['extension'];
$results_extension = mb_strtolower($results_extension);
if (file_exists( $file_png ) && $results_extension == 'jpg') {
$results = $metadata['file'];
$results = basename($results);
$results = preg_replace("/\.jpg$/", ".png", $results);
$metadata[sizes][png_original] = Array(
"file" => $results,
"width" => $metadata['width'], // ширину вытяну из metadata
"height" => $metadata['height'], // высоту вытяну из metadata
"mime-type" => "image/png"
);
}
/* END - kolshix for "PNG to JPG" ---- */
// Fetch additional metadata from EXIF/IPTC.
$image_meta = wp_read_image_metadata( $file );
if ( $image_meta )
ВОПРОС
Помогите допилить код - буду использовать его совместно с плагином PNG to JPG
Хочу использовать либо в function.php или в mu-plugins.
(нужно чтоб код выполнялся после того как загружено изображение и его данные записаны в таблицу базы данных) - код должен работать как при массовой загрузке изображений так и при единичной
вот что набрасал, нужна консультация
код проверяет если формат\расширение PNG то выполняется - если нет ничего не меняется
function ifthisPNG (){ // что нужно вставить здесь?
$image_id = get ID upload image; // как получить id изображения?
$format_image = get the file format ("mime-type); // тут формат получу по ID
if ($format_image == "PNG"){
$data = wp_get_attachment_metadata( $image_id );
$image_name = name.'.png'; // имя тоже получу по ID
$data[sizes][png_original] = Array(
"file" => $image_name,
"width" => "99999", // ширину вытяну из metadata
"height" => "99999", // высоту вытяну из metadata
"mime-type" => "image/png"
);
wp_update_attachment_metadata( $image_id, $data )
}else{
// если формат не JPG - то оставить все как есть
}
}