2012-09-02 73 views
0

我不得不搬過來我的WordPress網站,也做了一些媒體打掃衛生,然後除去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然後運行另一個腳本來刪除重複的行,這也起作用。不同的尺寸我有【

  • 150×150
  • 200x200的
  • 200x300
  • 300x189

回答

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.___' 
+0

LOL。多麼輝煌的舉動。我會給它一個去讓你知道! – gregwhitworth

+0

工作很好 - 刪除了1700行。一如既往地感謝您的幫助! – gregwhitworth

+0

Acutally沒有完全解決它,媒體畫廊實際上也是從wp_posts中拉出來的。於是我就以下查詢: '+ - [0-9] {3}×[0-9] {3} \ $' SELECT * FROM wp_posts WHERE POST_TITLE正則表達式; 注意我刪除了擴展名,因爲這些信息存儲在標題中,並且不包含它們。然後我運行相同的查詢,這次只刪除它們。 – gregwhitworth