[РЕШЕНО] 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 - то оставить все как есть } }