2017-05-24 57 views
-3

我在我的function.php中使用WordPress的Codex這個過濾器允許svg,svgz和dxf文件的上傳。但是上傳的所有上傳的測試文件都被WordPress的安全原因拒絕了。爲了實現這個目標,我還需要注意些什麼?調試WordPress的過濾器上傳啞劇

function my_custom_mime_types($mimes) { 

    // New allowed mime types. 
    $mimes['svg'] = 'image/svg+xml'; 
    $mimes['svgz'] = 'image/svg+xml'; 
    $mimes['dxf'] = 'application/dxf'; 


return $mimes; 
} 
add_filter('upload_mimes', 'my_custom_mime_types'); 
+0

是它的一些新的垃圾郵件的方法?我不想放鬆我的時間 – Kaddath

回答

1

As of wordpress 4.7.1 this is a fix

// Allow SVG 
add_filter('wp_check_filetype_and_ext', function($data, $file, $filename, 
$mimes) { 

    global $wp_version; 
    if ($wp_version !== '4.7.1') { 
    return $data; 
    } 

    $filetype = wp_check_filetype($filename, $mimes); 

    return [ 
     'ext'    => $filetype['ext'], 
     'type'   => $filetype['type'], 
     'proper_filename' => $data['proper_filename'] 
    ]; 

}, 10, 4); 

function cc_mime_types($mimes){ 
    $mimes['svg'] = 'image/svg+xml'; 
    $mimes['svgz'] = 'image/svg+xml'; 
    $mimes['dxf'] = 'application/dxf'; 
    return $mimes; 
} 
add_filter('upload_mimes', 'cc_mime_types'); 

function fix_svg() { 
    echo '<style type="text/css"> 
    .attachment-266x266, .thumbnail img { 
     width: 100% !important; 
     height: auto !important; 
    } 
    </style>'; 
} 
add_action('admin_head', 'fix_svg'); 
1

感謝您的代碼和參考亞倫!

我花了一些適應我能找到codepen所以您不必手動更改WP版本:

function relationship_options_filter($options, $field, $the_post) { 
    $options[‘post_status’] = array(‘publish’); 
    return $options; 
} 
add_filter('acf/fields/post_object/query/key=field_59074524ac92e', 'relationship_options_filter', 10, 3); 


// Allow SVG 
add_filter('wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) { 

    global $wp_version; if($wp_version == '4.7' || ((float) $wp_version < 4.7)) { return $data; } 

    $filetype = wp_check_filetype($filename, $mimes); 

    return [ 'ext' => $filetype['ext'], 'type' => $filetype['type'], 'proper_filename' => $data['proper_filename'] ]; 

}, 10, 4); 

function cc_mime_types($mimes){ 
    $mimes['svg'] = 'image/svg+xml'; 
    $mimes['svgz'] = 'image/svg+xml'; 
    $mimes['dxf'] = 'image/x-dwg'; 

    return $mimes; 
} 
add_filter('upload_mimes', 'cc_mime_types'); 

function fix_svg() { 
    echo '<style type="text/css"> 
    .attachment-266x266, .thumbnail img { 
     width: 100% !important; 
     height: auto !important; 
    } 
    </style>'; 
} 
add_action('admin_head', 'fix_svg');