• 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

    • This topic was modified 7 years, 7 months ago by kolshix.
    • This topic was modified 7 years, 7 months ago by kolshix.
    • This topic was modified 7 years, 7 months ago by kolshix.
  • The topic ‘100% great + my edit’ is closed to new replies.