Kozack
@Kozack
Thinking about a11y

Как удалить уменьшенные копии картинок в WordPress?

При загрузке файла на сервер получаем целый ряд уменьшенных копий.
При удалении файла (Из админки или функцией wp_delete_attachment) удаляется только оригинал.
Как удалять оригинал и все его уменьшенные копии?
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 2
@mantyr
Пишу много Golang кода с удовольствием:)
Посмотрите все адреса уменьшенных картинок в таблице wp_postmeta, выглядит так:

mysql> show columns  from wp_postmeta;
+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| meta_id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| post_id    | bigint(20) unsigned | NO   | MUL | 0       |                |
| meta_key   | varchar(255)        | YES  | MUL | NULL    |                |
| meta_value | longtext            | YES  |     | NULL    |                |
+------------+---------------------+------+-----+---------+----------------+


mysql> select * from wp_postmeta where meta_key = '_wp_attachment_metadata' limit 0,1
| meta_id | post_id | meta_key                | meta_value
|    5804 |    1962 | _wp_attachment_metadata  | a:5:{s:5:"sizes";a:2:{s:6:"medium";a:4:{s:9:"mime-type";s:9:"image/png";s:4:"file";s:76:"300x240/99c3f32407680f486bc6991db142828c36c1c91fffbfd88d2c6a1990035bb0a3.png";s:5:"width";i:300;s:6:"height";i:240;}s:9:"thumbnail";a:4:{s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";s:4:"file";s:76:"150x150/99c3f32407680f486bc6991db142828c36c1c91fffbfd88d2c6a1990035bb0a3.png";}}s:10:"image_meta";a:12:{s:13:"shutter_speed";s:1:"0";s:11:"orientation";s:0:"";s:8:"keywords";a:0:{}s:8:"aperture";s:1:"0";s:7:"caption";s:0:"";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:17:"created_timestamp";s:0:"";s:5:"title";s:0:"";}s:4:"file";s:75:"images/99c3f32407680f486bc6991db142828c36c1c91fffbfd88d2c6a1990035bb0a3.png";s:5:"width";i:1000;s:6:"height";i:631;}  |


Как не сложно догадаться:
  • пути у картинок относительные от wp-content/upload
  • в meta_value находится php serialize - php.net/manual/ru/function.serialize.php , php.net/manual/ru/function.unserialize.php
  • в post_id находится идентификатор не поста, а картинки (select * from wp_posts where id = 28;)
  • в meta_id просто идентификатор конкретной записи мета-данных, по нему потом можно будет удалить запись о размерах


Как удалить файлы "в идеологии" WordPress не подскажу, но вы с этим и сами справитесь зная где данные.
Ответ написан
Комментировать
MrDmives
@MrDmives
Разработка, продвижение сайтов. Настройка рекламы
На данный момент самый удобный, но ни фига не обновляемый вариант - это плагин DNUI (Delete Not Used Image). Выводит списком и предлагает удалить копии изображений.

DNUI-Delete-not-used-image-list.jpg
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы