Intereting Posts
Обратите внимание, что при создании числовой разбивки на пользовательский запрос WP_Query вытягивает дополнительную почту на страницу wp_insert_term () не вставляет термин Я перенесла сайт WPMU: не удалось создать каталоги для загрузки / … Отчаявшись за помощь! Могу ли я изменить ссылку регистрации по умолчанию (без htaccess)? вставить данные в таблицу базы данных из плагина с WP3.1 Показать только сообщения из определенной категории? Добавление поддержки темы для пользовательского изображения заголовка Использование jquery migrate для плагинов, несовместимых с jquery 1.10.2 Как добавить пользователя для добавления / редактирования администраторов? Как создать многоузловое облако глобальных тегов? Я не могу войти в мой сайт WordPress с помощью wp-login.php get_page_by_title () не работает, если присутствуют специальные символы Заменить «опубликованный на дату» с «измененным на дату» в сообщениях Синтаксис для получения N-го элемента в списке пользовательских типов сообщений?

Удалить исходное изображение – сохранить миниатюру?

Я использую много миниатюр, но не оригинальный файл. Чтобы сэкономить место, я хотел бы предотвратить сохранение оригинала на диске, но сохранить только эскиз 100px. Как я могу это сделать?

Спасибо, Деннис

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; } 

Я использую другое решение в Интернете. Он основан на том, что принято здесь, но он требует еще большего.

Тот, который принят здесь, удаляет основное изображение и продолжается. Решение, которое я нашел, заменяет исходное изображение изображением, созданным для «большого». Он просто продолжается без замены, если это разрешение изображения не определено.

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

http://www.wprecipes.com/how-to-automatically-use-resized-image-instead-of-originals

РЕДАКТИРОВАТЬ:

@dalbaeb указал мне на проблему, написанную в комментариях к блогу. Я переписал код на основе API вместо предлагаемого там решения. Это не такая уж большая разница, а просто использовать те же вызовы функций, что и в API;)

 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_filename = $image_data['sizes']['large']['file']; // Do what wordpress does in image_downsize() ... just replace the filenames ;) $image_basename = wp_basename($uploaded_image_location); $large_image_location = str_replace($image_basename, $large_image_filename, $uploaded_image_location); // 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']); // Check if other size-configurations link to the large-file foreach($image_data['sizes'] as $size => $sizeData) { if ($sizeData['file'] === $large_image_filename) unset($image_data['sizes'][$size]); } return $image_data; } 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_filename = $image_data['sizes']['large']['file']; // Do what wordpress does in image_downsize() ... just replace the filenames ;) $image_basename = wp_basename($uploaded_image_location); $large_image_location = str_replace($image_basename, $large_image_filename, $uploaded_image_location); // 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']); // Check if other size-configurations link to the large-file foreach($image_data['sizes'] as $size => $sizeData) { if ($sizeData['file'] === $large_image_filename) unset($image_data['sizes'][$size]); } return $image_data; } 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_filename = $image_data['sizes']['large']['file']; // Do what wordpress does in image_downsize() ... just replace the filenames ;) $image_basename = wp_basename($uploaded_image_location); $large_image_location = str_replace($image_basename, $large_image_filename, $uploaded_image_location); // 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']); // Check if other size-configurations link to the large-file foreach($image_data['sizes'] as $size => $sizeData) { if ($sizeData['file'] === $large_image_filename) unset($image_data['sizes'][$size]); } return $image_data; } add_filter('wp_generate_attachment_metadata', 'replace_uploaded_image'); 

EDIT2:

У меня возникла проблема с кодом на одном клиенте, где другая размерная конфигурация связана с большим файлом. Я обновил код соответствующим образом. Если у вас есть какие-то проблемы с этим, напишите мне письмо.

Я просто создал плагин, потому что у меня была такая же проблема. Вы можете скачать его здесь