概要説明
WordPress の記事の外部リンクに、別タブで開く・nofollow・noopener などをまとめて付けるプラグイン External Links の設定と、プラグインを使わずに functions.php で付けるコード。本文のデータは変えずに、表示のときに変わる。作業環境で確かめた結果つき。
~ 目次 ~
プラグイン External Links でできること
記事の中の外部リンク(ほかのサイトへのリンク)に、別タブで開く・nofollow などを、1 つずつ書き直さずにまとめて付けられるプラグインです。
External Links – nofollow, noopener & new window – WordPress プラグイン
無料・有効なサイト 9 万以上で、今も更新が続いています(2026 年 10 月に確かめた時点で 2.66・WordPress 7.1.3 まで確認済み)。
| できること | 中身 |
|---|---|
| 別タブで開く | 外部リンクに target=”_blank” を付ける |
| rel を付ける | nofollow・noopener・noreferrer・external・sponsored・ugc から選ぶ |
| アイコン | 外部リンクの横に、画像やアイコンを出す |
| 付ける場所 | 本文・コメント・ウィジェットなど、ページ全体から選べる |
| 外すもの | 決まった URL・class・サブドメインを、内部のリンクとして扱える |
記事の本文のデータは書き換えず、表示のときに付けます。プラグインを止めれば、元の表示に戻ります。
外部リンクの設定の画面
このサイトでは、外部リンクを「別タブで開く・nofollow・noopener・noreferrer・external」にしています。
| 項目 | このサイトの設定 |
|---|---|
| Open external links(開き方) | 新しいタブ(_blank) |
| Set follow or nofollow | nofollow |
| Also add to rel attribute | noopener・noreferrer・external |
| 付ける場所(Exceptions) | ページ全体・本文・コメント・ウィジェット |
作業環境で、この記事の公開ページのリンクを見ると、次のようになっていました。
<a href="https://ja.wordpress.org/plugins/wp-external-links/" target="_blank" rel="nofollow external noopener noreferrer">External Links – WordPress プラグイン</a>
nofollow は、Google には「たどらなくてよい」という目安として伝わります。自分が勧めたいサイトへのリンクまで全部に付けるかは、サイトの方針で決めます。広告のリンクは nofollow より sponsored が向いています。
プラグインを使わずに、コードで付ける
本文の外部リンクに別タブと rel を付けるだけなら、テーマの functions.php(子テーマがあれば子テーマ)に次のコードを足しても同じことができます。
/**
* 記事の本文の外部リンクに、別タブ(target="_blank")と rel を付ける(プラグインを使わない場合)
*/
add_filter( 'the_content', function ( $content ) {
if ( false === strpos( $content, '<a ' ) ) {
return $content;
}
$home = wp_parse_url( home_url(), PHP_URL_HOST );
$tags = new WP_HTML_Tag_Processor( $content );
while ( $tags->next_tag( 'a' ) ) {
$href = (string) $tags->get_attribute( 'href' );
$host = wp_parse_url( $href, PHP_URL_HOST );
// http(s) で始まり、自分のサイトでないリンクだけ
if ( ! $host || $host === $home || ! preg_match( '#^https?://#i', $href ) ) {
continue;
}
$rel = preg_split( '/\s+/', trim( (string) $tags->get_attribute( 'rel' ) ), -1, PREG_SPLIT_NO_EMPTY );
$rel = array_unique( array_merge( $rel, array( 'nofollow', 'noopener', 'noreferrer' ) ) );
$tags->set_attribute( 'rel', implode( ' ', $rel ) );
$tags->set_attribute( 'target', '_blank' );
}
return $tags->get_updated_html();
}, 20 );
| 書き方 | 役目 |
|---|---|
| WP_HTML_Tag_Processor | 本文の a タグを 1 つずつ見て、属性を足す(WordPress 6.2 から)。正規表現で書きかえるより、壊れにくい |
| 自分のサイトの host と比べる | 自分のサイトへのリンク・/ で始まるリンク・mailto は変えない |
| rel は今の値に足す | もとの sponsored などを消さない |
このサイトの作業環境(WordPress 7.1.3・PHP 8.3)で、試しの本文を通して確かめました。
| 試した本文 | 結果 |
|---|---|
| 外部のリンク | target=”_blank” と rel=”nofollow noopener noreferrer” が付いた |
| rel=”sponsored” がある外部のリンク | rel=”sponsored nofollow noopener noreferrer”(もとの値が残る) |
| 自分のサイトのリンク・/ で始まるリンク | そのまま |
| mailto のリンク・リンクのない文 | そのまま |
アイコンを出したり、コメントやウィジェットのリンクまで変えたりするなら、プラグインのほうが手軽です。
リンクの横にアイコンを出す
アイコンが出た外部リンク


