0

我不得不移动我的 WordPress 网站并对媒体进行一些内部清理,然后运行一个插件将清理过的媒体重新插入数据库。然而,它这样做的方法是查看目录,所以现在不仅仅是文件:xyz.jpg,我有 xyz-150x150、xyz-200x200 等。我想在我的 sql 上运行一个正则表达式来删除所有具有 _wp_attached_file 的附件,然后它们遵循以下命名方案“名称-”“大小”。例如:

INSERT INTO `wp_postmeta` VALUES(2379, 2152, '_wp_attached_file', '2010/09/Oneonta-Gorge-leaves-150x150.jpg');

这整行将被删除,但看起来像这样的行将保留:

INSERT INTO `wp_postmeta` VALUES(2379, 2152, '_wp_attached_file', '2010/09/Oneonta-Gorge-leaves.jpg');

此外,如果您认为删除 -200x200 会更容易,然后运行另一个脚本来删除重复的行,那也可以。我拥有的不同维度是:

  • 150x150
  • 200x200
  • 200x300
  • 300x189
4

1 回答 1

0

这是你可以尝试的东西。第一个查询将选择所有带有维度后缀的图像。这只是为了检查查询以确保您选择了所需的图像。

select * from wp_postmeta where meta_key = '_wp_attached_file' and meta_value regexp  '.+-[0-9]{3}x[0-9]{3}\.(jpg|gif|png)$'

如果您对结果满意,可以运行删除查询:

delete from wp_postmeta where meta_key = '_wp_attached_file' and meta_value regexp  '.+-[0-9]{3}x[0-9]{3}\.(jpg|gif|png)$'

或者,您可以使用LIKE. 您必须为每个维度运行它。此查询还假定三个字符的扩展名,例如 gif、jpg 或 png。

select * FROM wp_postmeta WHERE meta_key = '_wp_attached_file' and meta_value LIKE '%-150x150.___'
于 2012-09-02T18:27:30.217 回答