我正在尝试在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默认会这样做,但是有什么方法可以解决这个问题吗?
答案 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;
}