워드프레스 포스트 콘텐츠에서 모든 링크 제거하기

Last Updated: 2024년 04월 15일 댓글

애드센스 신청 시 본문에 링크가 있으면 애드센스 승인이 잘 안 될 수 있다고 주장하는 분들이 있습니다. 하지만 애드센스 승인 전에 블로그에 URL을 포함시키면 마이너스가 된다는 규정은 없다고 합니다. 여기에 대하여 다음 구글 포럼 글의 질문과 답변을 참고해 보세요:

SEO(검색엔진 최적화) 측면에서 오히려 적절한 내부 링크와 외부 링크가 도움이 될 것입니다. Yoast SEO, Rank Math SEO 플러그인의 SEO 분석 도구에서는 내부 링크와 외부 링크의 사용 여부를 체크하여 없을 경우 링크를 추가할 것을 권고합니다.

그럼에도 불구하고 모든 링크를 제거하고 싶은 경우, 또는 어떤 이유로 외부 링크를 모두 삭제하고 싶은 경우 아래에 제시하는 코드를 시도해 볼 수 있습니다.

워드프레스 포스트 콘텐츠에서 모든 링크 제거하기

워드프레스 포스트 콘텐츠에서 모든 링크를 제거하기를 원하는 경우 워드프레스 개발자 포럼에 나와 있는 아래의 코드를 사용할 수 있습니다.

// 워드프레스 포스트 콘텐츠에서 모든 링크 제거하기
// Removes all links from the content of WordPress posts.

add_filter( 'the_content', 'misha_remove_all_a' );
function misha_remove_all_a( $content ){

    return preg_replace('#<a.*?>(.*?)</a>#is', '\1', $content);

}

위의 코드를 차일드 테마의 함수 파일(functions.php)에 추가하시기 바랍니다. 이 작업을 위해서는 FTP/SFTP에 접속할 수 있어야 합니다.

워드프레스에서 모든 외부 링크 제거하기

워드프레스 포스트 콘텐츠에서 모든 외부 링크를 삭제하고 싶은 경우 다음 코드를 차일드 테마의 함수 파일에 추가할 수 있습니다.

// This code snippet is designed to filter out external links from WordPress post content.
// 워드프레스 포스트 콘텐츠에서 외부 링크 제거하기

add_filter('the_content', 'remove_external_links', 10);

function remove_external_links($content) {
    // 사이트의 주소를 가져옵니다.
    $site_url = wp_parse_url(site_url());
    
    return preg_replace_callback('#<a[^>]+href="([^"]+)"[^>]*>(.*?)</a>#i', function($matches) use ($site_url) {
        // 링크의 URL을 분석합니다.
        $link_url = wp_parse_url($matches[1]);

        // 링크가 외부 사이트인지 확인합니다.
        if (!empty($link_url['host']) && $link_url['host'] !== $site_url['host']) {
            // 링크 텍스트만 반환하여 외부 링크를 제거합니다.
            return $matches[2];
        }

        // 내부 링크는 그대로 둡니다.
        return $matches[0];
    }, $content);
}

자바스크립트를 사용하여 외부 링크를 제거하는 것도 가능합니다. 다음과 같은 코드를 WPCode 등의 플러그인을 사용하여 푸터 섹션에 추가할 수 있습니다.

<script>
document.addEventListener('DOMContentLoaded', (event) => {
    const siteHostname = window.location.hostname;

    document.querySelectorAll('article.post a').forEach(link => {
        const linkHostname = new URL(link.href).hostname;
        if (linkHostname !== siteHostname) {
            // This removes the <a> tag but keeps the text intact
            link.outerHTML = link.innerHTML;
        }
    });
});

</script>

GeneratePress 테마나 Kadence 테마를 사용하는 경우는 테마에서 제공하는 훅(Hook)을 사용하여 쉽게 코드를 푸터 섹션에 추가할 수 있습니다.

상기에 제시된 코드는 삭제하면 링크가 본래대로 복원됩니다.

참고


댓글 남기기

Leave a Comment