删除不需要的Woocommerce图片元

时间:2018-08-30 23:43:20

标签: php mysql wordpress woocommerce

几个版本之前,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 :(得分:-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导入更新的数据库