WordPress ブログ本文からすべてのリンクを削除する方法

Last Updated: 2024 年 11 月 05 日 댓글

ブログ記事にリンクがある場合 AdSense 承認がうまくいかないというカドラ通信があります。このような内容は根拠のない主張です。私は内部リンクと外部リンクがたくさんありますが、 AdSense 承認を受けました。むしろ、適切な内部リンクと外部リンクは、サイトの構造を改善し、ユーザーに有用な情報を提供するため、SEOの肯定的な要素として機能することができます。

nofollow プロパティこの過剰な外部リンク、特にアフィリエイトマーケティング目的の商業リンクが多すぎると、スパムとして分類される可能性があります。したがって、自然なリンク構成が重要であり、商業リンクの割合が高い場合は注意が必要です。

リンクのせいで AdSense 承認されていないと思われるか、またはすべてのリンクまたは外部リンク(特にnofollowが適用された外部リンク)を削除したい以下の方法を試してください。

参考までに AdSense 収益を上げたい場合は、すべてのリンクを現在のウィンドウで開くと、フロント広告(自動広告)が表示され、収益が増加する可能性があります。

WordPress ブログ本文からすべてのリンク/外部リンクを削除する方法

WordPress 'the_content'フィルタを使用してすべてのリンクを削除する

投稿コンテンツからすべてのリンクを削除する方法について WordPress 開発者フォーラムの「Remove all links in post content「で扱っています。以下のコードは WordPress 開発者フォーラムで提示された方法でパフォーマンスと読みやすさを向上させ、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;
}

上記のコードを チャイルドテーマの関数ファイルに追加してください。

WordPress '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を使用してブログ記事内のすべてのリンクを削除する

JavaScriptを使用すると、クライアント側(ユーザーブラウザ)でリンクの削除を実行するため、サーバーの負担を軽減することができ、ページの読み込み時間をわずかに短縮できます。特に訪問者数が多いサイト ブログの場合は有効です。ただし、JavaScriptコードが実行されるまで、リンクはしばらくの間画面に表示されることがあります。サイトが遅い場合、ページが読み込まれた直後にユーザーにリンクが表示されて消えることがあります。

上記のPHP方式ではなくJavaScript方式を使ってみて、もしサイト速度が遅くてリンクが現れて消える現象が発生した場合、サイト速度を改善したり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 コンテナが使用されていないテーマ(例: Newspaper, Avada など)では動作しません。そのようなテーマを使用する場合は、コードを適切に変更する必要があります。

例えば、 Avada テーマの場合 .single .entry-content 代わりに .single .post-content使用するとうまく動作します。

WordPressでは、さまざまな方法でJSコードを追加できます。最も簡単な方法は WPコードなどのプラグインをインストールし、Footerセクションにコードを追加できます。

JavaScriptを使用してポスト内のすべての外部リンクを削除する

以下のコードを使用すると、 .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);
            }
        }
    });
});

JavaScriptを使用してnofollowプロパティを含むすべてのリンクを削除する

外部リンクの中から nofollow 属性を持つリンクのみを削除したい場合は、次のコードでテストしてみてください。同様に .single .entry-content コンテナ内のリンクにのみ適用されるため Newspaper, Avada などのテーマでは、コードを適切に適用して修正してください。

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 など、一部のテーマで使用する場合は、テーマに合わせて適切に修正する必要があります。

最後に、

以上で WordPressにすべてのリンクまたは外部リンクを削除する方法について説明しました。また、nofollowを含むリンクが削除する方法も一緒に見ました。すべてのリンクまたはすべてのアフィリエイトリンクを削除したい場合は、それを適用できます。

JavaScript方式は、ティーストーリーやGoogleブログ(ブログスポット)などでも活用が可能です。

参照


コメントを残す

コメント