2026年5月20日

2026年5月20日

WordPressのnofollow属性を正しく設定する方法

はじめに

rel="nofollow"はリンク先へのPageRank(SEO評価)を渡さない指示をGoogleに伝える属性です。2019年にGoogleはnofolowをヒントとして扱う方針に変更し、sponsoredugcの2種類も追加しました。正しい使い方を理解して適切に設定することがSEO上重要です。

症状・原因

  • アフィリエイトリンクにnofollowを付けるべきか迷っている
  • Gutenbergのリンクエディタでnofollow設定の場所がわからない
  • 内部リンクにもnofollowを付けてしまっていてSEOが悪化している
  • コメントスパムでnofollow設定が機能していない

解決手順

ステップ1:nofollowの基本と2019年以降の変更点を理解する

【2019年以前】
nofollow = PageRankを渡さない(Googleは完全に従う)

【2019年以降】
nofollow  = PageRankを渡さない(ヒント扱い・Googleが無視する場合も)
sponsored = 有料・広告・アフィリエイトリンク
ugc       = ユーザー生成コンテンツ(コメント・フォーラム)

【内部リンクへのnofollow】
❌ 絶対に付けてはいけない
→ PageRankスカルプティング(2009年に廃止)
→ 内部のPageRankが無駄に消滅する
→ 「サイロ設計」と混同しないこと

【nofollowを付けるべきリンク】
✅ アフィリエイト(sponsored)
✅ 広告・PR(sponsored)
✅ コメント欄(ugc)
✅ 信頼性不明の外部サイト(nofollow)
✅ ログインページ・プライバシーポリシー等の法的ページ(任意)

ステップ2:Gutenbergのリンクにnofollowを設定する

【Gutenbergでのnofollow設定】

1. リンクを選択 → リンクボタンをクリック
2. リンクポップオーバーの右側「⋮」(詳細設定)をクリック
3. 「rel」フィールドに "nofollow" と入力
4. 複数指定: "nofollow noopener noreferrer"

または:
1. リンクを選択
2. ブロックの「HTMLとして編集」モード
3. <a href="..." rel="nofollow"> を直接編集

【Classic Editorでの設定】
テキストタブで直接 rel="nofollow" を追加
// Gutenberg のリンクダイアログに rel フィールドを追加
// register_block_type では標準でrel属性をサポート
// → 追加プラグイン不要で Gutenbergのリンクダイアログから設定可能
// → ただし UI が分かりにくいため プラグイン「Add nofollow to links」も有用

ステップ3:特定リンクに自動でnofollowを設定する

// functions.php: 外部リンクにのみ nofollow を自動追加

add_filter('the_content', function(string $content): string {
    $home_domain = parse_url(home_url(), PHP_URL_HOST);

    return preg_replace_callback(
        '/<a\s+([^>]*)href=["\']((https?:)?\/\/([^"\'\/]+)[^"\']*)["\']([^>]*)>/i',
        function(array $m) use ($home_domain): string {
            $link_domain = $m[4];

            // 内部リンクはスキップ(絶対にnofollowしない)
            if ($link_domain === $home_domain) {
                return $m[0];
            }

            $before = $m[1];
            $url    = $m[2];
            $after  = $m[5];

            // 既存のrel取得
            preg_match('/rel=["\']([^"\']*)["\']/', $before . $after, $rel_m);
            $rels = $rel_m ? array_filter(explode(' ', $rel_m[1])) : [];

            // nofollowを追加(sponsoredがあれば追加しない)
            if (!in_array('sponsored', $rels, true) && !in_array('nofollow', $rels, true)) {
                $rels[] = 'nofollow';
            }
            if (!in_array('noopener', $rels, true)) {
                $rels[] = 'noopener';
            }

            $new_rel = 'rel="' . implode(' ', $rels) . '"';
            $attrs = $before . $after;
            if ($rel_m) {
                $attrs = preg_replace('/rel=["\'][^"\']*["\']/', $new_rel, $attrs);
            } else {
                $attrs .= ' ' . $new_rel;
            }

            return '<a ' . trim($attrs) . ' href="' . esc_url($url) . '">';
        },
        $content
    );
});

ステップ4:Yoast SEOのnofollow設定を使う

【Yoast SEO でのリンク設定】
Yoast SEO → 設定 → サイトの表示 → リンク

・外部リンクにデフォルトでnofollow: ON/OFF
・外部リンクを新しいタブで開く: ON/OFF
・内部リンクにnofollowを追加: 絶対にOFFのまま

【個別リンクへの設定(Yoast SEO Premium)】
リンクを選択 → リンク設定 → nofollow チェックボックス

【All in One SEO でのリンク設定】
All in One SEO → リンクアシスタント
・記事ごとの内部リンク提案
・外部リンクの一括nofollow設定

ステップ5:既存コンテンツのnofollowを一括確認・修正する

# 内部リンクにnofollowが付いていないか確認
wp post list --post_status=publish --format=ids | \
xargs -I{} sh -c '
    content=$(wp post get {} --field=post_content 2>/dev/null)
    # 内部リンクのnofollow検索
    echo "$content" | grep -oP "href=\"https?://example\.com[^\"]*\"[^>]*rel=\"[^\"]*nofollow[^\"]*\""
' | head -20

# データベースで内部リンクのnofollow属性を除去
wp eval "
global \$wpdb;
\$posts = \$wpdb->get_results(
    \"SELECT ID, post_content FROM {\$wpdb->posts}
     WHERE post_status = 'publish'
     AND post_content LIKE '%example.com%nofollow%'\"
);
foreach (\$posts as \$post) {
    // 内部リンクのnofollowを除去する処理
    echo 'Post ID: ' . \$post->ID . ' を確認してください' . PHP_EOL;
}
echo '合計: ' . count(\$posts) . '件';
"

注意事項

  • 内部リンクにnofollowを付けると、サイト内部のPageRankフローが途切れてSEOに悪影響が出ます。内部リンクには絶対にnofollowを付けないでください
  • Googleはnofollowを「ヒント」として扱うため、nofollowを付けても検索結果に表示される可能性はゼロではありません。有害コンテンツへのリンク回避には別途対策が必要です
  • 2019年以降、アフィリエイトリンクにはnofollowよりsponsoredが推奨されています。古いコンテンツのnofollowをsponsoredに更新することも検討してください

まとめ

nofollowは内部リンクには絶対に付けず、外部リンクのうちアフィリエイト・広告はsponsored、コメント等ユーザー投稿はugc、信頼性不明な外部リンクはnofollowと使い分けます。Gutenbergのリンクダイアログの詳細設定からrel属性を手動設定できます。the_contentフィルターで外部リンクに自動でnofollow+noopenerを付ける実装が効率的です。内部リンクのnofollow有無は定期的にWP-CLIで確認してください。

お気軽にご相談ください

お見積りへ お問い合わせへ