2014-02-06 3 views
1

Я создал блог, где некоторые пользователи могут загружать изображения через панель инструментов Wordpress. Сайт быстро увязывается, потому что исходные изображения настолько велики. Некоторые пользователи не имеют знаний по изменению размеров самих изображений перед их загрузкой, и я не хочу изменять их вручную.Автоматическое изменение размера изображений Wordpress до максимальной ширины и высоты при загрузке?

Есть ли способ установить максимальную ширину и высоту для загруженных изображений? Я даже не хочу, чтобы оригинал оставался на веб-сайте. Я хочу, чтобы самая большая версия изображения на веб-сайте соответствовала ограничениям ширины и высоты, которые я установил.

ответ

2

Добавить этот код в функции functions.php вашей темы, заменив исходное изображение на версию размера.

function replace_uploaded_image($image_data) { 
// if there is no large image : return 
if (!isset($image_data['sizes']['large'])) return $image_data; 

// paths to the uploaded image and the large image 
$upload_dir = wp_upload_dir(); 
$uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file']; 
$large_image_location = $upload_dir['path'] . '/'.$image_data['sizes']['large']['file']; 

// delete the uploaded image 
unlink($uploaded_image_location); 

// rename the large image 
rename($large_image_location,$uploaded_image_location); 

// update image metadata and return them 
$image_data['width'] = $image_data['sizes']['large']['width']; 
$image_data['height'] = $image_data['sizes']['large']['height']; 
unset($image_data['sizes']['large']); 

return $image_data; 
} 

add_filter('wp_generate_attachment_metadata','replace_uploaded_image'); 

Статья Источник: http://goo.gl/nkszUn

+0

Только что нашел этот ответ и использовал его! Это было идеально! – kia4567

0

Ну почему вы не создаете новый размер изображения? http://codex.wordpress.org/Function_Reference/add_image_size

И используйте это изображение на своих шаблонах.

+1

Вы пропустили «Я даже не хочу, чтобы оригинал оставался на сайте». , поэтому ему требуется более активное решение, чем 'add_image_size()', которое сохранит изображение полного размера на сервере, даже если оно не используется нигде. Он также просит библиотеку загрузки/мультимедиа ограничить размеры изображения при загрузке, ни одна из которых не адресована этим «ответом». Это действительно должно быть комментарий, если что-либо. – Ennui

+0

Не пропустите это. Он не сказал, что ограничивает размеры загружаемых медиафайлов. Даже он не хочет, чтобы исходный img был загружен, основной проблемой являются изображения, размещенные на шаблонах, которые слишком велики, что приводит к развалу сайта. Поэтому простое решение для этого - это то, что я отвечаю. – rgdesign

0

Это будет работать для новых добавляемых изображений, а также более старых заменяющего пользователь загрузил большие изображения автоматически с указанным вами Большого размера от админка-х media settings:

add_filter('wp_generate_attachment_metadata','replace_uploaded_image'); 
function replace_uploaded_image($image_data) { 
    // if there is no large image : return 
    if (!isset($image_data['sizes']['large'])) return $image_data; 

    // paths to the uploaded image and the large image 
    $upload_dir = wp_upload_dir(); 
    $uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file']; 
    // $large_image_location = $upload_dir['path'] . '/'.$image_data['sizes']['large']['file']; // ** This only works for new image uploads - fixed for older images below. 
    $current_subdir = substr($image_data['file'],0,strrpos($image_data['file'],"/")); 
    $large_image_location = $upload_dir['basedir'] . '/'.$current_subdir.'/'.$image_data['sizes']['large']['file']; 

    // delete the uploaded image 
    unlink($uploaded_image_location); 

    // rename the large image 
    rename($large_image_location,$uploaded_image_location); 

    // update image metadata and return them 
    $image_data['width'] = $image_data['sizes']['large']['width']; 
    $image_data['height'] = $image_data['sizes']['large']['height']; 
    unset($image_data['sizes']['large']); 

    return $image_data; 
} 
Смежные вопросы