블로그 글에 링크가 있으면 애드센스 승인이 잘 안 된다는 카드라 통신이 있습니다. 이런 내용은 근거 없는 주장입니다. 저는 내부 링크와 외부 링크가 많아도 대부분 애드센스 승인을 받았습니다. 오히려 적절한 내부 링크와 외부 링크는 사이트의 구조를 개선하고 사용자에게 유용한 정보를 제공하므로 SEO에 긍정적인 요소로 작용할 수 있습니다.
nofollow 속성이 적용된 과도한 외부 링크, 특히 제휴 마케팅 목적의 상업적 링크가 지나치게 많을 경우 스팸으로 분류될 가능성이 있습니다. 따라서 자연스러운 링크 구성이 중요하며, 상업적 링크 비중이 높다면 주의가 필요합니다.
링크 때문에 애드센스 승인이 안 된다고 생각되거나, 모든 링크 또는 외부 링크(특히 nofollow가 적용된 외부 링크)를 제거하고 싶은 아래에서 제시하는 방법을 시도해 보시기 바랍니다.
참고로 애드센스 수익을 높이고 싶은 경우 모든 링크를 현재 창에서 열면 전면 광고(자동 광고)가 표출되어 수익이 증가할 수 있습니다.
워드프레스 블로그 본문에서 모든 링크/외부 링크를 제거하는 방법
워드프레스 'the_content' 필터를 사용하여 모든 링크 제거하기
포스트 콘텐츠에서 모든 링크를 제거하는 방법에 대하여 워드프레스 개발자 포럼의 "Remove all links in post content"에서 다루고 있습니다. 아래의 코드는 워드프레스 개발자 포럼에서 제시된 방식에서 성능과 가독성을 개선하고, PHP의 정규 표현식을 최적화하여 모든 링크 태그를 본문에서 제거합니다. preg_replace_callback 함수를 사용하여 보다 간결하게 링크를 텍스트로 변환합니다.
add_filter('the_content', 'removelink_content', 1);
function removelink_content($content = '') {
// 모든 <a> 태그를 본문에서 제거하고 텍스트만 남김
$content = preg_replace_callback(
"#<a[^>]*>(.*?)</a>#is",
function($matches) {
return $matches[1]; // 링크 텍스트만 반환
},
$content
);
return $content;
}
위의 코드를 차일드 테마의 함수 파일에 추가하시기 바랍니다.
워드프레스 'the_content' 필터를 사용하여 외부 링크만 제거하기
외부 링크만 제거하고, 도메인으로 된 내부 링크는 유지하고 싶은 경우 아래 코드를 사용할 수 있습니다. 이 코드에서는 site_url() 함수를 사용하여 현재 사이트의 URL과 비교하여 외부 링크를 식별합니다.
add_filter('the_content', 'remove_external_links', 1);
function remove_external_links($content = '') {
$site_url = parse_url(site_url(), PHP_URL_HOST); // 현재 사이트의 도메인
$content = preg_replace_callback(
"#<a([^>]*)href=['\"](.*?)['\"](.*?)>(.*?)</a>#is",
function($matches) use ($site_url) {
$link_url = parse_url($matches[2], PHP_URL_HOST);
// 외부 링크인지 확인
if ($link_url && $link_url !== $site_url) {
return $matches[4]; // 링크 텍스트만 반환 (외부 링크 제거)
}
return $matches[0]; // 내부 링크는 그대로 반환
},
$content
);
return $content;
}
PHP 방식을 사용하여 nofollow 속성이 포함된 모든 링크 제거하기
링크 중에서 nofollow 속성이 포함된 링크만 제거하고 싶은 경우 자식 테마에 다음과 같은 코드를 추가하여 테스트해 보시기 바랍니다.
add_filter('the_content', 'remove_nofollow_external_links', 1);
function remove_nofollow_external_links($content = '') {
$site_url = parse_url(site_url(), PHP_URL_HOST); // 현재 사이트의 도메인
$content = preg_replace_callback(
'#<a\s+[^>]*href=[\'"](.*?)[\'"][^>]*>(.*?)</a>#is',
function($matches) use ($site_url) {
$link_url = parse_url($matches[1], PHP_URL_HOST);
$attributes = $matches[0]; // a 태그 전체
$inner_text = $matches[2]; // 링크 안의 텍스트
// 외부 링크이고, 'rel' 속성에 'nofollow'가 포함된 경우에만 제거
if ($link_url && $link_url !== $site_url && preg_match('/\brel=["\'][^"\']*nofollow[^"\']*["\']/i', $attributes)) {
return $inner_text; // 링크 텍스트만 반환
}
return $matches[0]; // 그 외의 링크는 그대로 유지
},
$content
);
return $content;
}
자바스크립트를 사용하여 블로그 글 내의 모든 링크 제거하기
JavaScript를 사용하면 클라이언트 측(사용자 브라우저)에서 링크 제거 작업을 수행하므로 서버의 부담을 줄일 수 있어 페이지 로딩 시간을 약간 줄일 수 있습니다. 특히 방문자 수가 많은 사이트나 블로그의 경우 효과적일 수 있습니다. 하지만 자바스크립트 코드가 실행되기 전까지는 링크가 잠깐 동안 화면에 보일 수 있습니다. 사이트 속도가 느린 경우 페이지가 로드된 직후 사용자에게 링크가 나타났다 사라지는 현상이 발생할 수 있습니다.
상기의 PHP 방식보다는 자바스크립트 방식을 이용해보고, 만약 사이트 속도가 느려서 링크가 나타났다 사라지는 현상이 발생한다면 사이트 속도를 개선하거나 PHP 방식을 사용할 수 있을 것입니다.
GeneratePress와 같은 가벼운 테마를 사용하고, 불필요한 플러그인을 과감히 제거하고, 이미지 크기를 줄이고, 캐시 플러그인을 사용하고, 클라우드웨이즈나 Vultr, AWS와 같은 빠른 호스팅을 이용하면 속도를 개선할 수 있습니다.
document.addEventListener("DOMContentLoaded", function() {
// Select all <a> tags inside .single .entry-content
const links = document.querySelectorAll(".single .entry-content a");
// Loop through each link and replace it with its inner text
links.forEach(link => {
const text = link.textContent;
const parent = link.parentNode;
if (parent) {
parent.replaceChild(document.createTextNode(text), link);
}
});
});
이 코드는 .single .entry-content 내의 모든 링크를 제거하는 역할을 합니다. GeneratePress, 아스트라 등 많은 테마에서 잘 작동할 것입니다.
하지만 .single .entry-content 컨테이너가 사용되지 않는 테마(예: 뉴스페이퍼, 아바다 등)에서는 작동하지 않습니다. 그런 테마를 사용하는 경우에는 코드를 적절히 수정해야 합니다.
예를 들어, Avada 테마의 경우 .single .entry-content 대신 .single .post-content를 사용하면 잘 작동할 것입니다.
워드프레스에서는 여러 가지 방법으로 JS 코드를 추가할 수 있습니다. 가장 간단한 방법은 WPCode와 같은 플러그인을 설치하고 Footer 섹션에 코드를 추가할 수 있습니다.
자바스크립트를 사용하여 포스트 내의 모든 외부 링크 제거하기
아래의 코드를 사용하면 .single .entry-content 컨테이너 내의 모든 외부 링크가 제거됩니다.
document.addEventListener("DOMContentLoaded", function() {
const currentHost = window.location.hostname;
const links = document.querySelectorAll(".single .entry-content a");
links.forEach(link => {
const linkHost = new URL(link.href).hostname;
// Check if the link is external (different hostname)
if (linkHost !== currentHost) {
const text = link.textContent;
const parent = link.parentNode;
if (parent) {
parent.replaceChild(document.createTextNode(text), link);
}
}
});
});
자바스크립트를 사용하여 nofollow 속성이 포함된 모든 링크 제거하기
외부 링크 중에서 nofollow 속성이 있는 링크만 삭제하고 싶은 경우에는 다음 코드로 테스트해 보시기 바랍니다. 마찬가지로 .single .entry-content 컨테이너 내의 링크에만 적용되므로 뉴스페이퍼, 아바다 등의 테마에서는 코드를 적절히 응용하여 수정하세요.
document.addEventListener("DOMContentLoaded", function() {
const currentHost = window.location.hostname;
const links = document.querySelectorAll(".single .entry-content a");
links.forEach(link => {
const linkHost = new URL(link.href).hostname;
const hasNofollow = link.rel.includes("nofollow");
// 외부 링크이면서 'nofollow' 속성이 있는 경우
if (linkHost !== currentHost && hasNofollow) {
const text = link.textContent;
const parent = link.parentNode;
if (parent) {
parent.replaceChild(document.createTextNode(text), link);
}
}
});
});
이 글의 모든 코드는 GeneratePress 테마가 설치된 사이트에서 테스트했습니다. Astra 등 대부분의 테마에서는 잘 작동하지만, JavaScript 코드는 Newspaper 등 일부 테마에서 사용할 경우 테마에 맞게 적절히 수정해야 합니다.
마치며
이상으로 워드프레스에 모든 링크나 외부 링크를 제거하는 방법에 대하여 살펴보았습니다. 또한, nofollow가 포함된 링크가 제거하는 방법도 함께 살펴보았습니다. 모든 링크 또는 모든 제휴 링크를 제거하고 싶은 경우 응용할 수 있을 것입니다.
자바스크립트 방식은 티스토리나 구글 블로그(블로그 스팟) 등에서도 활용이 가능합니다.
참고
- 워드프레스로 쉽게 랜딩 페이지 만들기 (feat. 엘리멘터, GeneratePress, Divi)
- AI 영어회화 앱 스픽(Speak)으로 영어 면접, 여행 준비하기: 맞춤형 시나리오로 스피킹 실력 향상
- 인공지능(AI) 검색엔진 Perplexity 활용 가이드: 효과적인 사용법과 AI 모델 선택 팁
댓글 남기기