wp_handle_upload为每个图像上传多个尺寸

时间:2017-11-02 08:51:57

标签: php html wordpress file-upload

我正在尝试在wordpress插件中创建一个文件上传功能,允许用户上传一个文件,该文件稍后将显示为一种缩略图。我使用的代码如下所示:

$file_return = wp_handle_upload($logo, array('test_form' => false));
if (isset($file_return['error']) || isset($file_return['upload_error_handler'])) {
    return false;
} else {
    $filename = $file_return['file'];

    $attachment = array(
        'post_mime_type' => $file_return['type'],
        'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
        'post_content' => '',
        'post_status' => 'inherit',
        'guid' => $file_return['url']
    );

    $attachment_id = wp_insert_attachment($attachment, $file_return['file']);

    $attachment_data = wp_generate_attachment_metadata($attachment_id, $filename);
    wp_update_attachment_metadata($attachment_id, $attachment_data);
    if (0 < intval($attachment_id)) {
        return $attachment_id;
    }
}

html很简单:

<form ...>
    <input type='file' name='logo-upload' id='logo-upload'>
</form>

用于通过AJAX上传徽标的JS:(jquery)

var formData = new FormData();
var logo = $('#logo-upload')[0].files[0];
formData.append('logo', logo);
$.ajax({
    method: 'POST',
    url: '...',
    processData: false,
    contentType: false,
    data: formData
}).done(function (data) {
    alert('uploaded!');
    alert(data);
});

这不是所有的代码,但我相信这一切都是相关的。 这里的问题是,不是只有一个文件,名称上传image.png,我得到了这个:

image.png
image-150x150.png
image-300x179.png
image-410x121.png
...
我知道wordpress默认会这样做,但是有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

在媒体设置(设置 - &gt;媒体)中,您可以尝试将所有列出的尺寸放在宽度和高度的0(零)上。这应该有所帮助。

答案 1 :(得分:0)

您可以使用WP过滤器。函数unset()销毁指定的变量:

    add_filter( 'intermediate_image_sizes_advanced', 'prefix_remove_default_images' );
// Remove default image sizes here. 
function prefix_remove_default_images( $sizes ) {
 unset( $sizes['small']); // 150px
 unset( $sizes['medium']); // 300px
 unset( $sizes['large']); // 1024px
 unset( $sizes['medium_large']); // 768px
 return $sizes;
}