0

WordPressサイトを移動し、メディアのハウスクリーニングを行ってから、プラグインを実行して、クリーニングしたメディアをデータベースに再挿入する必要がありました。ただし、これを行う方法はディレクトリを確認することです。したがって、ファイルxyz.jpgを使用する代わりに、xyz-150x150、xyz-200x200などを使用します。SQLで正規表現を実行してすべてを削除します。 _wp_attached_fileがあり、次の命名スキーム「name-」「sizes」に従う添付ファイル。例えば:

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などの3文字の拡張子も想定しています。

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