调试Wordpress过滤器上传mimes

时间:2017-05-24 14:04:15

标签: php wordpress mime-types

我在我的function.php中使用WordPress Codex中的这个过滤器来允许上传svg,svgz和dxf文件。但是我上传的所有上传的测试文件都被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' );

2 个答案:

答案 0 :(得分: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 :(得分:1)

感谢代码和参考Aaron!

我在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' );