Помощь Как отключить сохранение оригинала изображения

SmileNet

Постоялец
Регистрация
6 Окт 2012
Сообщения
77
Реакции
24
Доброго всем.
Облазил весь гугл, но не нашел. Т.к. WP достаточно хорошо жмет загруженные картинки, а тема использует свою нарезку, были отключены миниатюры: thumbnail, medium, medium_large, а у large выставлен максимальный размер который мне нужен. Везде, если загружаемое изображение больше large используется именно large, а не оригинал. Если загружать изображение такого же размера как large (заранее подготовленное), то large все равно создается и используется, но его размер оптимизирован по сравнению с оригиналом. В итоге оригинал не оптимизирован и занимает лишнее место. А т.к. те кто будет добавлять новости как обычно пофигисты, то оригиналы достаточно быстро займут много места.
Как сделать, что б после создания миниатюр оригинал удалялся или не создавался. Решать плагинами не хочется.
 

SmileNet

Постоялец
Регистрация
6 Окт 2012
Сообщения
77
Реакции
24

SmileNet

Постоялец
Регистрация
6 Окт 2012
Сообщения
77
Реакции
24
Если кому понадобится.
Создает large по размерам указанным в настройках и заменяет ей оригинал. В итоге и размер оптимальный, лишних (не нужных дублей нет), и "оригинал" всегда на месте. Проверено.

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']; // ** 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;
}

add_filter('wp_generate_attachment_metadata','replace_uploaded_image');
Взято Для просмотра ссылки Войди или Зарегистрируйся
 

SmileNet

Постоялец
Регистрация
6 Окт 2012
Сообщения
77
Реакции
24

tyz233

Писатель
Регистрация
19 Янв 2015
Сообщения
7
Реакции
0
здравствуйте

Если кому понадобится.
Создает large по размерам указанным в настройках и заменяет ей оригинал. В итоге и размер оптимальный, лишних (не нужных дублей нет), и "оригинал" всегда на месте. Проверено.

подскажите пож-та!
а как бы сделать, что бы и "оригинал" удалялся из upload? не нужен он от слова совсем

попробовал все и ewww и код - на версии 5.3. оригинал изображения остается в аплоаде...
 
Последнее редактирование:

Teceract

Постоялец
Регистрация
15 Фев 2009
Сообщения
205
Реакции
112
здравствуйте



подскажите пож-та!
а как бы сделать, что бы и "оригинал" удалялся из upload? не нужен он от слова совсем

попробовал все и ewww и код - на версии 5.3. оригинал изображения остается в аплоаде...
PHP:
add_filter( 'wp_generate_attachment_metadata', 'delete_fullsize_image' );
function delete_fullsize_image( $metadata ) {
    $upload_dir      = wp_upload_dir();
    $full_image_path = trailingslashit( $upload_dir['basedir'] ) . $metadata['file'];
    $deleted         = unlink( $full_image_path );

    return $metadata;
}
после генерации изображений с оригинала, в конце операции удаляет его полностью
 
Сверху