外部リンクを自動でtarget="_blank" rel="nofollow noopener"にする方法

WordPressで記事内の外部リンクを自動的に新しいタブで開き、さらにSEOやセキュリティの観点から rel="nofollow noopener" を追加する方法を解説します。

functions.php に追加するコード

以下のコードを子テーマの functions.php に追加してください。


// 記事内リンクを自動で target="_blank" rel="nofollow noopener" にする
function auto_external_link($content) {
    $pattern = '/<a(.*?)href=["\'](http[s]?:\/\/(?!' . $_SERVER['HTTP_HOST'] . ')[^"\']+)["\'](.*?)>/i';
    $replacement = '<a$1href="$2"$4 target="_blank" rel="nofollow noopener">';
    $content = preg_replace($pattern, $replacement, $content);
    return $content;
}
add_filter('the_content', 'auto_external_link');

上記のコードは、投稿本文内のリンクのうち、自サイト以外の外部リンクに対して自動で属性を追加します。

4. 注意点

  • 自サイト内リンクは変更されません。
  • 記事本文以外(ウィジェットやカスタムHTMLなど)は対象外です。

5. まとめ

この方法を使えば、記事内の外部リンクを自動で新しいタブで開き、安全性とSEOの両方に配慮した設定が可能です。テーマに依存せず使えるので便利です。