워드프레스 포스트 이미지 첨부파일 링크에 class 추가하기
워드프레스 포스트 내용 중 이미지 첨부파일의 링크에 class를 추가하는 방법이다. 이 방법이 필요한 이유는 새로운 워드프레스 블로그를 하나 준비하면서 테마 수정 중에 테마관련 문서를 보니 jQuery prettyPhoto 플러그인을 기본 적용되어 있다고 하는데 기존에 올려진 이미지에 이 플러그인 적용시키려면 포스트 내용을 모두 수정해야하는 만만치 않은 일이 생겨서 php코드를 이용해 이 문제를 해결하기 위함이다.
add_filter('the_content', 'add_lighthbox_class');
function add_lighthbox_class($content)
{
preg_match_all('/(<a[^>]+href=['"]?([^>'"]+[^>'"]+)['"]?[^>]*>).*<img alt="">]+>.*</a>/i', $content, $matchs);
$count = count($matchs[2]);
for($i=0; $i<$count; $i++) {
if(strpos( $matchs[1][$i], 'prettyPhoto' )) continue;
$a = preg_replace('/>$/i', ' class="prettyPhoto">', $matchs[1][$i]);
$content = str_replace($matchs[1][$i], $a, $content);
}
return $content;
}
위 코드를 테마의 functions.php 파일에 추가한다. jQuery prettyPhoto플러그인을 적용하기 위해서는 a 태그에 class=”prettyPhoto”가 추가되어 있어야 하는데 이것을 본문 내영 중에서 이미지링크 부분을 정규식을 추출해서 class를 추가하는 코드이다. 사진과 관련하여 lightbox 플러그인을 적용하기 위해서 rel=”lightbox” 를 추가하는 경우가 있는데 이런 경우에도 위의 코드를 수정해서 적용할 수 있을 것이다. 플러그인의 확인은 http://realsnap.kr/ 에서 할 수 있다.