WordPress スレッド内のすべての画像を削除する方法
記事では、すべての画像を削除したい場合があります。 この場合、 コンテンツ() 部分で画像タグを削除する方法で画像を削除することができます。
たとえば、次のようなコードを使用することができます。
<?php echo preg_replace('/<img[^>]+./','',get_the_content()); ?>
またはstackexchangeでは、次のような提案しています。
<?php $content = get_the_content(); $content = preg_replace("/<img[^>]+\>/i", " ", $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); echo $content; ?> // Source: stackexchange
ちなみに、両方とも画像キャプションを使用した画像は削除できません。 画像のキャプションまで考慮する必要がある場合How to Remove All Images From WordPress 投稿"(WordPress ポスト内のすべての画像を削除する方法)という文が助けになります。
既存の記事に添付された画像を検索する基本的なSQLクエリは、次のとおりです。
SELECT * FROM $wpdb->posts WHERE $wpdb->posts.post_type = 'attachment' AND $wpdb->posts.post_mime_type LIKE 'image%' AND $wpdb->posts.post_parent IN ( SELECT ID FROM $wpdb->posts WHERE $wpdb->posts.post_type = 'post')
使用されていない画像を削除する
Webホスティングディスク容量を節約するために使用されていない画像を見つけて削除することを考慮してみることができます。 この場合、 DNUI(Delete Not Used Image)というプラグインを使用することができます。
ちなみにDNUIは評価が極端に分かれるので、使用には注意が必要になると思われる。 プラグインの作成者が明らかにしたように、必ずバックアップをしておいた後に使用しても安全でしょう。
使用する前に、プラグインのページの FAQ(よくある質問) 部分と他の情報を検討してみてください。
MySQLのテーブルから画像を削除する
次のPHPコードを使用した画像タグ( )を削除できます。
// PHP script to remove images from MySQL tables mysql_connect("localhost", "root", "root") or die(mysql_error()); mysql_select_db("database") or die(mysql_error()); $result = mysql_query("SELECT * FROM wp_posts WHERE post_status='publish'") or die(mysql_error()); while ($row = mysql_fetch_array($result)) { $content = $row['post_content']; $content = preg_replace("/<img[^>]+\>/i", "", $content); $content = addslashes($content); $id = $row['ID']; mysql_query("UPDATE wp_posts SET post_content='".$content."' WHERE ID='".$id."'") or die(mysql_error()); }
詳しくは「MySQL remove images from tables「記事を参考にしてください。
コメントを残す