WordPress как на ладони

Вопрос как подружить SVG и WordPress

Появилась новая проблема, с которой не сталкивался ещё вроде бы никто на просторах интернета, все решения до 2020 года предложенные авторами разных сайтов и даже местное не работают через файлы Functions.php и .htaccess .

При загрузке в библиотеку SVG файла с активными плагинами Safe SVG или SVG Support С любыми доступными на данный момент решениями подключения SVG файла, нет возможности залить файл в библиотеку пишет следующее:
От сервера получен неожиданные ответ. Файл возможно не был загружен корректно. Перезагрузите страницу или проверьте медиатеку.

Либо logo.svg Обработка изображения не удалась. Если это фотография или большое изображение, пожалуйста, уменьшите его до 2500 пикселей и загрузите снова.

Подскажите пожалуйста что делать? как быть? версия ПХП Версия PHP 7.3.13 WP 5.3.2

0
Intelligence
4.1 год назад
  • 1
    kolshix779 paxtoy.com

    как минимум начать с первого
    1 загрузку запрещенных типов файлов

    add_filter( 'upload_mimes', 'upload_allow_types' );
    function upload_allow_types( $mimes ) {
    	// разрешаем новые типы
    	$mimes['svg']  = 'text/plain'; // image/svg+xml
    	$mimes['doc']  = 'application/msword'; 
    	$mimes['woff'] = 'font/woff';
    	$mimes['psd']  = 'image/vnd.adobe.photoshop'; 
    	$mimes['djv']  = 'image/vnd.djvu';
    	$mimes['djvu'] = 'image/vnd.djvu';
    
    	// отключаем имеющиеся
    	unset( $mimes['mp4a'] );
    
    	return $mimes;
    }

    2 я не знаю умеет ли движек распознавать svg, но можно врезать в функцию свой код. У меня нет правктики с svg но есть практика c webp :

    ван нужно будет отрезать не нужное, сделать код анализа ширины - высоты и т.п. , добать код создания промежуточных миниатюр, а потом сохранить в базу данных инфу о файле

    /**** Конвертация изображений в WEBP */
    add_filter( 'wp_generate_attachment_metadata', 'custom_webp_thumb', 2000000000);
    
    function custom_webp_thumb($metadata) {
    	$mime_type = $metadata["sizes"]["medium"]["mime-type"];
    	if ( $mime_type == "image/png" ){
    		// Получаем серверный путь и путь к файлу 
    		$uploads = wp_upload_dir();                  // серверная папка загрузок
    		$path_parts  = pathinfo($metadata['file']);  // промежуточные папки по годам и месяцам ($path_parts['dirname']) = 2018/10
    
    		$file = path_join( $uploads['basedir'], $path_parts['dirname'].'/'. $metadata["sizes"]["medium"]["file"] ); // original image file
    		$image = imagecreatefrompng($file); // или imagecreatefromjpeg
    		imagepalettetotruecolor($image);
    		imagealphablending($image, false);
    		imagesavealpha($image, true);
    
    		// Корректировка имен и сохранение 
    		$new_webp_image = preg_replace("/\.png$/", ".webp", $metadata["sizes"]["medium"]["file"]);      
    		imagewebp($image, $uploads['basedir'].'/'. $path_parts['dirname'].'/'. $new_webp_image);
    
    		$metadata["sizes"]["medium_webp"] = Array(
    									"file" => $new_webp_image,
    									"width" => $metadata["sizes"]["medium"]["width"],   
    									"height" => $metadata["sizes"]["medium"]["height"], 
    									"mime-type" => "image/svg+xml"
    								); 
    	//  unlink($file);      // удалить оригинальную миниатюру   
    
    	}
    
    	return $metadata;
    }
    chomovva 4.1 год назад

    нужно ещё добавить валидацию SVG файла.Запретили загрузку SVG на сайт не просто так.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация