删除不需要的Woocommerce图像元

问题描述 投票:0回答:1

几个版本以前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查询是否可能?如果是这样的话会是什么?

先感谢您。

php mysql wordpress woocommerce
1个回答
-1
投票

试试这个:

  1. 使用phpMyAdmin导出数据库
  2. Notepad++打开它的副本(总是备份)
  3. 按CTRL + H打开替换对话框
  4. "sizes".*."image_meta"放入“查找内容:”字段
  5. "sizes";a:0:{}s:10:"image_meta"放入“替换为:”字段
  6. 勾选“正则表达式”,取消勾选“。匹配换行符”
  7. 单击“查找下一个”按钮,确保仅选择所需的字符串部分
  8. 如果是,请单击“全部替换”按钮
  9. 使用phpMyAdmin导入更新的数据库
© www.soinside.com 2019 - 2024. All rights reserved.