Удалить ненужные мета-изображения Woocommerce - PullRequest
0 голосов
/ 31 августа 2018

Пару версий назад WOOCommerce начал генерировать дополнительные миниатюры изображений, в моем случае 100x100 и 700x700 ( 700x700 на самом деле является размером изображения по умолчанию для моей установки WordPress, поэтому у меня нет идеи сделать дополнительную копию ).

Чтобы предотвратить это, я добавил следующий код в functions.php:

function shapeSpace_customize_image_sizes($sizes) {
    unset($sizes['shop_catalog']);
    unset($sizes['shop_single']);
    unset($sizes['shop_thumbnail']);
    unset($sizes['woocommerce_gallery_thumbnail']);
    unset($sizes['woocommerce_single']);
    unset($sizes['woocommerce_thumbnail']);
}
add_filter('intermediate_image_sizes_advanced', 'shapeSpace_customize_image_sizes');
add_filter('max_srcset_image_width', create_function('', 'return 1;'));

и WOOCommerce успешно останавливает спам на моем сервере.

Итак, теперь я хочу удалить все эти изображения -100x100 и -700x700, но я не могу этого сделать, так как они указаны в столбце _wp_attachment_metadata таблицы wp_postmeta.

Ссылка всегда находится между "sizes" и "image_meta" и выглядит как

"sizes";a:4:{s:18:"woocommerce_single";a:4:{s:4:"file";s:30:"IMAGE-700x700.jpg";s:5:"width";i:700;s:6:"height";i:700;s:9:"mime-type";s:10:"image/jpeg";}s:29:"woocommerce_gallery_thumbnail";a:4:{s:4:"file";s:30:"IMAGE-100x100.jpg";s:5:"width";i:100;s:6:"height";i:100;s:9:"mime-type";s:10:"image/jpeg";}s:11:"shop_single";a:4:{s:4:"file";s:30:"IMAGE-700x700.jpg";s:5:"width";i:700;s:6:"height";i:700;s:9:"mime-type";s:10:"image/jpeg";}s:14:"shop_thumbnail";a:4:{s:4:"file";s:30:"IMAGE-100x100.jpg";s:5:"width";i:100;s:6:"height";i:100;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta"

Очень большая строка, но читать ее не нужно, так как фактический шаблон просто

"sizes";a:4:{SOME_TEXT}s:10:"image_meta"

, где a:4 после "sizes" соответствует количеству миниатюр.


Я хочу найти и заменить каждый

"sizes";a:4:{SOME_TEXT}s:10:"image_meta"

с

"sizes";a:0:{}s:10:"image_meta"

Я могу сделать это вручную, но не думаю, что это хорошая идея для ~ 1000 изображений.

Возможно ли это с запросом MySQL? Если так, что это будет?

Заранее спасибо.

1 Ответ

0 голосов
/ 31 августа 2018

Попробуйте это:

  1. Экспорт вашей базы данных с phpMyAdmin
  2. Открыть копию (всегда делать резервную копию) в Блокнот ++
  3. Нажмите CTRL + H, чтобы открыть диалог замены
  4. Поместите "sizes".*."image_meta" в поле " Найти что: "
  5. Поместите "sizes";a:0:{}s:10:"image_meta" в поле " Заменить на: "
  6. Галочка " Регулярное выражение ", снятие галочки ". Соответствует новой строке "
  7. Нажмите кнопку « Найти далее » и убедитесь, что выбрана только нужная часть строки
  8. Если это так, нажмите кнопку « Заменить все »
  9. Импортируйте обновленную базу данных с помощью phpMyAdmin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...