워드프레스 게시글에서 모든 이미지를 제거하는 방법
글에서 모든 이미지를 삭제하고 싶은 경우가 있을 수 있습니다. 이 경우 the_content() 부분에서 이미지 태그를 제거하는 방법으로 이미지를 제거할 수 있습니다.
예를 들어, 다음과 같은 코드를 사용할 수 있습니다.
<?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 Posts"(워드프레스 포스트에서 모든 이미지를 제거하는 방법)라는 글이 도움이 될 것입니다.
기존 글에 첨부된 이미지를 찾는 기본적인 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')
사용되지 않는 이미지 삭제하기
웹호스팅 디스크 용량을 절감하기 위해 사용되지 않는 이미지를 찾아서 삭제하는 것을 고려해볼 수 있습니다. 이 경우 DNUI(Delete Not Used Image)라는 플러그인을 사용할 수 있습니다.
참고로 DNUI는 평가가 극단으로 나뉘기 때문에 사용에 주의가 필요할 것 같습니다. 플러그인 제작자가 밝혔듯이 반드시 백업을 해놓은 다음에 사용하는 것이 안전할 것입니다.
사용하기 전에 플러그인 페이지의 FAQ(자주 묻는 질문) 부분과 다른 정보를 검토해보시기 바랍니다.
MySQL 테이블에서 이미지 제거하기
다음과 같은 PHP 코드를 사용하여 이미지 태그(<img ...>)를 제거할 수 있습니다.
// 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" 글을 참고해보세요.
댓글 남기기