워드프레스 포스트에서 모든 이미지 제거하기

Last Updated: 2017년 04월 06일 댓글

워드프레스 게시글에서 모든 이미지를 제거하는 방법

글에서 모든 이미지를 삭제하고 싶은 경우가 있을 수 있습니다. 이 경우 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" 글을 참고해보세요.


댓글 남기기

Leave a Comment