我使用a function 在我的主题中,阻止上载大尺寸图像文件(由于@fischi),但我想应用它strictly 到jpg/。仅限jpeg文件,因为它阻止上载。pdf文件也是。如何调整此功能?
add_filter(\'wp_handle_upload_prefilter\', \'f711_image_size_prevent\');
function f711_image_size_prevent($file) {
// get filesize of upload
$size = $file[\'size\'];
$size = $size / 1024; // Calculate down to KB
// get imagetype of upload
$type = $file[\'type\'];
$is_image = strpos($type, \'image\');
// set sizelimit
$limit = 700; // Your Filesize in KB
// set imagelimit
$imagelimit = 7;
// set allowed imagetype
$imagetype = \'image/jpeg\';
// query how many images the current user already uploaded
global $current_user;
$args = array(
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'numberposts\' => -1,
\'post_type\' => \'attachment\',
\'author\' => $current_user->ID,
);
$attachmentsbyuser = get_posts( $args );
if ( ( $size > $limit ) && ($is_image !== false) ) { // check if the image is small enough
$file[\'error\'] = \'Image files must be smaller than \'.$limit.\'KB\';
} elseif ( $type != $imagetype ) { // check if image type is allowed
$file[\'error\'] = \'Image must be \' . $imagetype . \'.\';
} elseif ( count( $attachmentsbyuser ) >= $imagelimit ) { // check if the user has exceeded the image limit
$file[\'error\'] = \'Image limit of \' . $imagelimit . \' is exceeded for this user.\';
}
return $file;
}
UPDATE
这是经过改进的代码(尚未测试),感谢@nikhil sheth:
add_filter(\'wp_handle_upload_prefilter\', \'f711_image_size_prevent\');
function f711_image_size_prevent($file) {
// get imagetype of upload
$type = $file[\'type\'];
$is_image = strpos($type, \'image\');
// set allowed imagetype
$imagetype = \'image/jpeg\';
if ( $type == $imagetype ) {
// get filesize of upload
$size = $file[\'size\'];
$size = $size / 1024; // Calculate down to KB
// set sizelimit
$limit = 700; // Your Filesize in KB
// set imagelimit
$imagelimit = 7;
// query how many images the current user already uploaded
global $current_user;
$args = array(
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'numberposts\' => -1,
\'post_type\' => \'attachment\',
\'author\' => $current_user->ID,
);
$attachmentsbyuser = get_posts( $args );
if ( ( $size > $limit ) && ($is_image !== false) ) { // check if the image is small enough
$file[\'error\'] = \'Image files must be smaller than \'.$limit.\'KB\';
} elseif ( count( $attachmentsbyuser ) >= $imagelimit ) { // check if the user has exceeded the image limit
$file[\'error\'] = \'Image limit of \' . $imagelimit . \' is exceeded for this user.\';
}
return $file;
} else { return $file; }
}