워드프레스 사이트/댓글 내의 외부 링크를 새 창에서 열기

Last Updated: 2022년 08월 01일 | | 2개 댓글

워드프레스 사이트 내의 글이나 댓글(코멘트)에 링크가 포함될 수 있습니다. 보통의 경우 댓글 내 링크를 클릭하면 현재 창을 벗어나 다른 페이지나 다른 사이트로 이동하게 될 수 있습니다. 이런 현상을 방지하기 위해 댓글 내의 URL을 클릭할 경우 새로운 창에서 실행되도록 할 수 있습니다.

[ 이 글은 2022년 8월 1일에 최종 업데이트되었습니다. ]

SEO 플러그인에 탑재된 기능을 사용하여 새 창에서 외부 링크 열기

일부 SEO 플러그인에서 외부 링크를 새창이나 새 탭에서 여는 기능을 제공합니다. 예를 들어, Rank Math에서는 워드프레스 알림판 > Rank Math > General Settings > Links 아래의 Open External Links in New Tab/Window 옵션을 On으로 설정하면 포스트, 페이지 또는 기타 포스트 타입에 있는 외부 링크가 새 창/새 탭에서 표시됩니다.

Rank Math 플러그인의 새 창에서 외부 링크 열기 기능

함수를 사용하여 댓글 내의 외부 URL을 새 창에 열기

먼저 함수를 사용하는 방법을 살펴보겠습니다. 아래의 함수는 1) 댓글 내의 링크가 현재 사이트 내의 주소인지를 체크하여 현재 사이트 내의 링크이면 현재 창에서 이동하도록 하고, 외부 주소인 경우 새로운 창에서 열리도록 합니다. 2) 그리고 target 속성이 있는지는 체크하지 않습니다. 따라서 댓글 내의 링크에 이미 target 속성이 포함되어 있다면 충돌 문제가 발생할 수 있습니다.

// 코멘트 영역의 링크를 새 창으로 열기
function rt_add_link_target( $content ){
// use the <a> tag to split into segments
$bits = explode( '<a ', $content );
// loop though the segments
foreach( $bits as $key=>$bit ){
// find the end of each link
$pos = strpos( $bit, '>' );
// check if there is an end (only fails with malformed markup)
if( $pos !== false ){
// get a string with just the link's attibutes
$part = substr( $bit, 0, $pos );
// for comparison, get the current site/network url
$siteurl = network_site_url();
// if the site url is in the attributes, assume it's in the href and skip, also if a target is present
if( strpos( $part, $siteurl ) === false && strpos( $part, 'target=' ) === false ){
// add the target attribute
$bits[$key] = 'target="_blank" ' . $bits[$key];
}
}
}
// re-assemble the content, and return it
return implode( '<a ', $bits );
}

add_filter( 'comment_text', 'rt_add_link_target' );

// Source: http://www.roytanck.com/

위의 코드를 사용 중인 테마 내의 함수 파일(functions.php) 파일에 추가하도록 합니다. 차일드 테마(자식 테마)를 사용해야 추후에 테마가 업데이트되더라도 테마 파일에 추가한 내용이 초기화되지 않습니다.

위의 코드는 오래 되었기 때문에 최신 워드프레스에서 제대로 작동할지는 장담할 수 없습니다. 코드가 제대로 작동하지 않으면 플러그인을 사용해보시기 바랍니다.

댓글 내의 모든 URL을 새 창에서 열기

위의 함수는 외부 링크만 새 창에서 열지만 모든 링크를 새 창에서 열기를 원하는 경우에는 다음 함수를 사용합니다.

function comment_links_in_new_tab($text) {
$return = str_replace('<a', '<a target="_blank"', $text);
return $return;
}
add_filter('get_comment_author_link', 'comment_links_in_new_tab');
add_filter('comment_text', 'comment_links_in_new_tab');

// Source: http://www.tricksbag.com/

이 함수를 사용해보면 댓글 내의 외부 URL은 물론 내부 URL도 새 창에서 열립니다.

이 코드 또한 오래 되었기 때문에 최신 워드프레스에서 제대로 작동하는지 여부에 대해 장담할 수 없습니다. 상기 코드가 제대로 작동하지 않으면 플러그인을 사용하시기 바랍니다.

자바스크립트나 jQuery를 사용하여 구현하기

다른 방법으로 자바스트립트나 jQuery를 사용할 수도 있습니다. 이 방법은 여기를 참고해보시기 바랍니다.

워드프레스 플러그인 사용하기

마지막으로 가장 간편한 방법으로 플러그인을 사용할 수 있습니다. 이 기능을 제공하는 플러그인으로 WP Open Comment Links in New Window가 있습니다.

WP Open Comment Links in New Window 댓글을 새 창에서 열기

워드프레스 사이트 내의 모든 외부 URL을 새 창에서 열기

참고로 워드프레스 블로그 전체에서 외부 링크를 모두 새 창으로 열기를 원하는 경우에는 Open external links in a new window 플러그인을 사용할 수 있습니다.

Open external links in a new window

이외에도 External Links – nofollow, noopener & new window 같은 플러그인이 있습니다. SEO 플러그인이나 테마에서 이런 기능을 제공하는 경우에는 굳이 플러그인을 사용할 필요가 없지만, 그렇지 않은 경우에는 플러그인을 사용하면 편리합니다.

내부 링크를 현재 창에서 열기

내부 링크를 현재 창에서 열리도록 설정하면, 방문자가 링크 클릭 시 다음 페이지가 로드되면서 모바일 전면광고가 노출될 수 있는 상태가 되어 전면 광고가 노출될 가능성이 높아져서 애드센스 광고 수익 증가를 기대할 수 있습니다.

참고:


2 개 댓글

Leave a Comment