100% great + my edit
-
Plugin does not write the original PNG in the database – To fix this, you need
edit the code in:
/wp-admin/includes/image.php
find and add the code in function
function wp_generate_attachment_metadata( $attachment_id, $file )
if ( ! is_wp_error( $editor ) ) $metadata['sizes'] = $editor->multi_resize( $sizes ); } else { $metadata['sizes'] = array(); } /* START - 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, 'full' ) ?> // call image size like original PNG <?php echo wp_get_attachment_image_url( $id, 'as_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') { //## wp_postmeta => _wp_attachment_metadata // запись name.jpg как большой копии name.png - добавляем большую копию в качестве миниатюры $image_ex_jpg = basename($metadata['file']); $metadata[sizes][as_original] = Array( "file" => $image_ex_jpg, "width" => $metadata['width'], // ширину вытяну из metadata "height" => $metadata['height'], // высоту вытяну из metadata "mime-type" => "image/jpeg" ); // в _wp_attachment_metadata => главная картинка в формате PNG $metadata[file] = preg_replace("/\.jpg$/", ".png", $metadata[file]); //## wp_posts $image_ex_png = preg_replace("/\.jpg$/", ".png", $image_ex_jpg); $upload_dir = wp_upload_dir(); global $wpdb; wp_update_post(array( 'ID' => $attachment_id, 'post_mime_type' => 'image/png' )); $wpdb->update( $wpdb->posts, array( 'guid' => $upload_dir["url"] . '/' . $image_ex_png ), array( 'ID' => $attachment_id ), array( '%s' ), array( '%d' ) ); //## wp_postmeta => _wp_attached_file // wp_postmeta => _wp_attached_file => указать что главное вложение в формате PNG $meta = get_post_meta( $attachment_id, '_wp_attached_file', 1 ); $meta = preg_replace("/\.jpg$/", ".png", $meta); update_post_meta( $attachment_id, '_wp_attached_file', $meta ); } /* END - kolshix for "PNG to JPG" ---- */ // Fetch additional metadata from EXIF/IPTC. $image_meta = wp_read_image_metadata( $file ); if ( $image_meta )
Большое спасибо , плагин помог избавится от грамостских страниц с форматом ПНГ и позволил сохранить оригиналы для меня и моих пользователей! А главное Это БЕСПЛАТНО !
—-
ВАЖНО! при генерации миниатюр – плагины генерируют новые PNG файлы а миниатюры в jpg не удаляютэтот код дополняет плагин
что делает код :
1 проверяет подходящий формат именно PNG
2 редактирует базу данных
2.1 выставляет в wp_postmeta -> _wp_attached_file файл PNG как оригинал
2.2 выставляет в wp_postmeta -> _wp_attachment_metadatа файл PNG на первое место а форматы JPG ставит как миниатюры
2.3 добавляет в wp_postmeta -> _wp_attachment_metadatа миниатюру в размер оригинала и вызывается по размеру “as_original”
3 в wp_posts выставляет вместо формата JPG формат PNGВЫВОД
плагин создает Копию оригинала PNG в формате JPG + миниатюры, а мой код застовляет поинимать вордпрес что главная картинка в PNG – а остальные миниатюры в JPG
- The topic ‘100% great + my edit’ is closed to new replies.