2026年5月20日

2026年5月20日

WordPressの検索順位が急落した場合の対処法

はじめに

検索順位の急落は複数の原因が考えられます。Googleのアルゴリズム更新・技術的なSEO問題・手動ペナルティ・設定ミスなど、原因によって対処法が異なります。まず原因を正確に特定してから対処することが重要です。

症状・原因

  • 特定の日を境にオーガニック流入が大幅に減少した
  • Search Consoleで「手動による対策」の通知が届いた
  • noindex タグが誤ってサイト全体に設定されていた
  • 更新前後でページ数が大幅に変わっている

解決手順

ステップ1:原因の種類を特定する

【チェックリスト】

① Googleアルゴリズム更新と日付が一致するか?
→ https://status.search.google.com/ で更新履歴を確認
→ Search Engine Land / SEMrush Sensor でコアアップデートを確認

② Search Console に手動ペナルティの通知があるか?
→ Search Console → セキュリティと手動による対策 → 手動による対策

③ noindex・robots.txt に問題があるか?
→ ブラウザで: view-source:https://example.com/robots.txt
→ Search Console → URL検査ツール → インデックス登録を確認

④ 大規模なコンテンツ変更・削除があったか?
→ git log / WordPressリビジョンで変更内容を確認

⑤ ライバルサイトも落ちているか?
→ SEMrush / Ahrefs で競合サイトのトラフィック変化を確認

ステップ2:技術的なSEO問題を確認する

# robots.txt の確認(Disallow: / になっていないか)
curl -s https://example.com/robots.txt

# サイトマップが正しく返るか確認
curl -s -o /dev/null -w "%{http_code}" https://example.com/wp-sitemap.xml

# ホームページのnoindexタグを確認
curl -s https://example.com/ | grep -i "noindex\|robots"

# WordPress の検索エンジン表示設定を確認
wp option get blog_public
# 0 = 検索エンジンに表示しない(問題あり)
# 1 = 検索エンジンに表示する(正常)
// 誤ったnoindex設定の確認と修正

// 設定を修正(管理画面 → 設定 → 表示設定 → 検索エンジンの表示)
// または wp-config.php や functions.php に誤ったコードがないか確認

// 問題のあるコード例(これがある場合は削除)
// add_action('wp_head', function() {
//     echo '<meta name="robots" content="noindex, nofollow">';
// });

// 正しいコード例(本番環境では削除)
// define('WPSEO_NOINDEX', true);  // Yoast SEO プラグインのnoindex設定

// Search Console で確認するためのGoogleボット向けアクセスをシミュレート
// → URL検査ツール → URLを検査 → ライブテスト

ステップ3:コンテンツの問題を診断する

# インデックス数の急変を確認(site: 演算子)
# ブラウザで: site:example.com
# 想定より大幅に少ない場合はインデックス問題

# 重複コンテンツの確認
wp post list --post_type=post --post_status=publish \
    --format=json | python3 -c "
import json, sys
posts = json.load(sys.stdin)
titles = [p['post_title'] for p in posts]
dupes = [t for t in titles if titles.count(t) > 1]
print('重複タイトル:', set(dupes))
"

# カノニカルURLの確認
curl -s https://example.com/post-slug/ | grep -i canonical
// functions.php: カノニカルURL設定の確認

// Yoast SEO / All in One SEO が正しくカノニカルを出力しているか確認
add_action('wp_head', function(): void {
    if (is_singular()) {
        $canonical = get_permalink();
        // プラグインが出力していない場合のフォールバック
        if (!defined('WPSEO_VERSION') && !defined('AIOSEO_VERSION')) {
            echo '<link rel="canonical" href="' . esc_url($canonical) . '">' . PHP_EOL;
        }
    }
}, 5);

// ページネーションのカノニカル
// ?page=2 などのページには rel="next"/"prev" が必要(廃止済みだがrel=canonicalは有効)

ステップ4:被リンクの問題(スパムリンク)を確認する

# Google Search Console → リンク → 外部リンク → 上位のリンク元サイト
# 不自然なリンクがある場合:

# 1. Disavow ファイルを作成
cat > disavow.txt << 'EOF'
# スパムリンクの否認
domain:spam-site1.com
domain:spam-site2.com
https://bad-site.com/specific-page/
EOF

# 2. Search Console → 古いツール → リンクの否認
# disavow.txt をアップロード
// functions.php: 低品質ページのnoindexを適切に設定
// (乱用するとインデックス数が減って逆効果になる場合もある)

add_action('wp_head', function(): void {
    // タグページ、作者アーカイブはnoindex
    if (is_tag() || is_author()) {
        echo '<meta name="robots" content="noindex, follow">' . PHP_EOL;
    }

    // 検索結果ページ
    if (is_search()) {
        echo '<meta name="robots" content="noindex, follow">' . PHP_EOL;
    }
}, 1);

ステップ5:回復のためのアクション

// コンテンツの品質改善チェックリスト
// functions.php: コンテンツ品質確認ツール

add_action('admin_notices', function(): void {
    if (!current_user_can('manage_options')) return;
    $screen = get_current_screen();
    if ($screen->id !== 'edit-post') return;

    // 文字数が少ない投稿を警告
    global $wpdb;
    $short_posts = $wpdb->get_var(
        "SELECT COUNT(*) FROM {$wpdb->posts}
         WHERE post_status = 'publish'
           AND post_type = 'post'
           AND CHAR_LENGTH(post_content) < 500"
    );

    if ($short_posts > 0) {
        echo '<div class="notice notice-warning"><p>';
        echo "文字数500字未満の公開記事が{$short_posts}件あります。コンテンツを充実させることを検討してください。";
        echo '</p></div>';
    }
});
# Search Console の URL 再クロールリクエスト(重要ページのみ)
# Search Console → URL検査 → インデックス登録をリクエスト

# サイトマップを再送信
wp eval "
\$sitemap_url = home_url('/wp-sitemap.xml');
\$ping_url = 'https://www.google.com/ping?sitemap=' . rawurlencode(\$sitemap_url);
\$response = wp_remote_get(\$ping_url);
echo 'Status: ' . wp_remote_retrieve_response_code(\$response);
"

注意事項

  • コアアップデートによる順位変動は、Googleが「品質の高いコンテンツを評価」した結果です。小手先の対策より、コンテンツの充実が最も有効です。回復には数週間〜数ヶ月かかる場合があります
  • 手動ペナルティの場合は、Search Consoleの再審査リクエスト機能を使い、問題を修正した旨をGoogleに申告する必要があります
  • blog_public0になっているとサイト全体がインデックスされません。wp option get blog_publicで必ず確認してください

まとめ

順位急落の診断は①アルゴリズム更新との時期一致確認、②Search Consoleで手動ペナルティ・カバレッジエラーを確認、③wp option get blog_publicでnoindex設定ミスを確認、④robots.txtとカノニカルの技術的チェック、⑤被リンクのスパムリンク確認と否認、の順で進めます。原因特定後にコンテンツ品質改善・サイトマップ再送信・再クロールリクエストで回復を促進します。

お気軽にご相談ください

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