允许在没有插件的情况下在媒体上传器中上传SVG

时间:2020-08-25 作者:Jason Is My Name

我以前曾在我的职能范围内使用过这段代码。php文件,用于为上传到我的网站的SVG启用和创建缩略图:

// ALLOW SVG
    function add_file_types_to_uploads($file_types){
        $new_filetypes = array();
        $new_filetypes[\'svg\'] = \'image/svg+xml\';
        $file_types = array_merge($file_types, $new_filetypes );
        return $file_types;
    }
    add_action(\'upload_mimes\', \'add_file_types_to_uploads\');

    function common_svg_media_thumbnails($response, $attachment, $meta){
        if($response[\'type\'] === \'image\' && $response[\'subtype\'] === \'svg+xml\' && class_exists(\'SimpleXMLElement\'))
        {
            try {
                $path = get_attached_file($attachment->ID);
                if(@file_exists($path))
                {
                    $svg = new SimpleXMLElement(@file_get_contents($path));
                    $src = $response[\'url\'];
                    $width = (int) $svg[\'width\'];
                    $height = (int) $svg[\'height\'];

                    //media gallery
                    $response[\'image\'] = compact( \'src\', \'width\', \'height\' );
                    $response[\'thumb\'] = compact( \'src\', \'width\', \'height\' );

                    //media single
                    $response[\'sizes\'][\'full\'] = array(
                        \'height\'        => $height,
                        \'width\'         => $width,
                        \'url\'           => $src,
                        \'orientation\'   => $height > $width ? \'portrait\' : \'landscape\'
                    );
                }
            }
            catch(Exception $e){}
        }

        return $response;
    }
    add_filter(\'wp_prepare_attachment_for_js\', \'common_svg_media_thumbnails\', 10, 3);
// END ALLOW SVG
我正在尝试将此代码复制到新站点,但仍收到错误:

"logo.svg” has failed to upload.
Sorry, this file type is not permitted for security reasons.
此网站位于非WordPress网站的子目录中,如:

www.example.co.uk/SITE_DIRECTORY/wp-content/themes/THEME_NAME/functions.php
我是不是错过了让这一切正常运转的一步?

~请不要引用插件。

~请帮我获取这段代码片段,该代码片段之前已被证明在其他网站上有效;在这个新网站上工作。

谢谢,杰森。

1 个回复
SO网友:Dharmishtha Patel

function cc_mime_types($mimes) {
  $mimes[\'svg\'] = \'image/svg+xml\'; 
  return $mimes;
}
add_filter(\'upload_mimes\', \'cc_mime_types\'); 
外接程序功能。活动主题中的php

define(\'ALLOW_UNFILTERED_UPLOADS\', true); 
加载项wp配置。php

相关推荐

升级PHP版本会导致“使用未定义的常量WP_CONTENT_DIR”警告吗?

在我的HostGator共享主机上,使用CPanel选项设置每个域的PHP,如果我为现有博客打开PHP 7.3(或其他7.x版本),我会看到一个错误页面:警告:在/my\\u site/public\\u html/WP includes/load中使用未定义的常量WP\\u CONTENT\\u DIR–假定为“WP\\u CONTENT\\u DIR”(这将在未来版本的PHP中引发错误)。php第141行您的php安装似乎缺少WordPress所需的MySQL扩展如果我用谷歌搜索这个,所有的建议都是关