Intereting Posts
Регистрация в WordPress по ролям Получить размер меньшей версии изображения Cookie не установлен Как сделать ссылку на категорию для сообщения перейдите к соответствующему номеру страницы в архиве? Изменение структуры постоянных ссылок без потери SEO Отношение Meta Query «AND» затем задает массив соответственно Перенаправить все ссылки из категории в новые ссылки на новую категорию Застревает в цикле перенаправления после использования действия wp_login Добавление данных в массив в usermeta и отображение его в цикле Почему переходные процессы могут работать неправильно? Скрыть числа просмотров для определенных ролей Отменить выделение пункта меню в блоге, когда выбран пункт меню категории Какой пользователь / группа принадлежит WordPress в отношении прав доступа к файлам? Любой официальный способ создания темы администратора? Возвращаемое значение add_menu_page

Как удалить все созданные изображения с моего сервера, кроме тех, которые в настоящее время используются в сообщениях

У меня есть новый набор размеров изображений для темы моего сайта в разработке. Мой сервер заполнен старыми размерами изображений, большинство из которых никогда не использовались. Вы слышали это раньше, не так ли?

Вопрос
Как удалить все эскизы WP с моего сервера, но не те миниатюры, которые в настоящее время используются в сообщениях ?

То есть сказать что-то вроде: $ find . -name "*-*x*.jpg" | xargs rm -f $ find . -name "*-*x*.jpg" | xargs rm -f $ find . -name "*-*x*.jpg" | xargs rm -f слишком широк для молотка, потому что myimage-300x250.jpg может использоваться в сообщении. Его 6 других вариантов приветствуются, чтобы уйти!

Я думаю, мне нужно создать список используемых изображений, сравнить их с моим каталогом и удалить разницу (минус оригиналы). Но как обойти это ускользает от меня.


Боковая панель « почему? »:
Дополнительные размеры изображений на сервере, как правило, не имеют большого значения, но сейчас у нас более 2,7 концерта, и просто кажется, что их оставляют и оставляют за собой. Кроме того, мы собираемся начать новую работу – почему бы не провести весеннюю уборку?

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

Solutions Collecting From Web of "Как удалить все созданные изображения с моего сервера, кроме тех, которые в настоящее время используются в сообщениях"

Это должно помочь вам начать:

  1. Перебирайте все сообщения и создайте массив связанных файлов изображений
  2. Перебирайте все вложения изображений и перекрестные проверки, если какой-либо из них связан с

Может потребоваться его пакет или увеличить тайм-аут и ограничение памяти, в зависимости от сервера и количества сообщений, с которыми вы работаете.

 $posts = get_posts( array( 'posts_per_page' => -1, 'post_type' => array( 'post', 'page' ), ) ); $files = array(); foreach ( $posts as $post ) { if ( preg_match_all( '/src=(?:\'|")(.+?)(?:\'|")/', $post->post_content, $matches ) ) { foreach ( $matches[1] as $url ) { // Replace "wp-content/uploads/" with your upload directory if not default setup if ( preg_match( '!wp-content/uploads/(.+)$!', $url, $matches_2 ) ) $files[] = $matches_2[1]; } } } $posts = get_posts( array( 'posts_per_page' => -1, 'post_mime_type' => 'image', 'post_type' => 'attachment', 'fields' => 'ids', ) ); update_postmeta_cache( $posts ); foreach ( $posts as $post_id ) { if ( is_file( $file = get_attached_file( $post_id ) ) ) { if ( $meta = wp_get_attachment_metadata( $post_id ) ) { $path = dirname( $file ); if ( preg_match( '!^[0-9]{4}/[0-9]{2}/!', $meta['file'], $matches ) ) { // Split date folders with filename for when searching size variations $suffix = $matches[0]; } else { $suffix = ''; } if ( ! in_array( $meta['file'], $files ) ) { // Original file not in post content // unlink( $file ); } foreach ( $meta['sizes'] as $name => $data ) { if ( ! in_array( $suffix . $data['file'], $files ) ) { // Image size not in post content // unlink( "$path/{$data['file']}" ); } } } } else { wp_delete_post( $post_id, true ); // Might as well clean up } } 

Что вы делаете с этим, зависит от вас. Если вы собираетесь сохранить оригинальные, но удалять изменения размера, убедитесь, что вы уничтожили его существование из записи базы данных в $meta['sizes'] и сохраните с помощью wp_update_attachment_metadata( $post_id, $meta ) .

Вы даже можете зайти так далеко, чтобы восстановить новые размеры с помощью wp_get_image_editor() и обновить старые src в вашем wp_get_image_editor() на лету.