Yoast SEOのai-optimizeバグをサイトのSEOを台無しにする前に修正する

最近、友人がWordPressの投稿で不穏なものを見つけた後、私に連絡してきました。その友人はクラシックエディターでYoast SEO Premiumを使用しており、Yoastがai-optimize-6ai-optimize-9のような奇妙なCSSクラスを自動的にコンテンツに直接挿入していることに気づきました。

問題は、Yoast AI Optimizeを無効にしたり、プラグインを完全に削除したりした後でも、これらのクラスが投稿に永続的に埋め込まれたままであることです。これは、プラグインの期待される動作に反しています。つまり、アンインストールしたときに、コンテンツに痕跡を残さないはずです。

これらのAIマーカーはサイトに視覚的な影響を与えないかもしれませんが、ソースコードを乱雑にします。また、AIによって生成された、または最適化されたコンテンツであることをAIコンテンツ検出器、盗用チェッカー、さらには検索エンジンに伝える可能性もあります。

このガイドでは、簡単なコードスニペットを使用してこれらの非表示クラスを削除する方法を説明します。また、安全に適用する方法と、Yoastの代替として使用することをお勧めするSEOプラグインについても説明します。

Yoast SEOのai-optimizeバグを修正する

このチュートリアルでは、以下の内容を説明します。

なぜこれらの ai-optimize クラスが SEO に悪いのか

ai-optimize-{number} CSSクラスは、Yoast SEO PremiumのAI機能をクラシックエディターで使用すると追加されます。これらはフロントエンドには表示されませんが、コンテンツのHTMLに埋め込まれるため、問題が発生する可能性があります。

サイトの投稿やページにアクセスし、ブラウザのインスペクトツールを使用することで、それらを表示できます。

Yoast SEOのAI最適化バグ

これらを削除することをお勧めする理由は次のとおりです。

  • HTMLを散らかします: これらの不要なクラスは、コードの可読性と解析を困難にします。
  • 無意味です: コンテンツの外観や機能には影響しません。AI ツールの残り物にすぎません。
  • AI検出ツールをトリガーする可能性があります: 一部の 盗用チェッカー および AIコンテンツ検出ツール はこれらのパターンを検出し、自分で書いたものであっても投稿をフラグ付けする可能性があります。
  • サイト全体にAIの痕跡を残します: 複数のサイトで同じクラスが使用されている場合、Googleはそのパターンを低品質または大量生産されたAIコンテンツと関連付け始める可能性があります。
  • フォーマットの競合のリスクを高めます:未知のクラスは、後々テーマやプラグインと干渉する可能性があります。

これらの隠されたマーカーを保持することにメリットはなく、削除すべきいくつかの良い理由があります。

良いニュースは、簡単な修正があることです。次のセクションで安全に実行する方法を説明します。

ステップ 1: 変更を加える前にバックアップを作成する

先に進む前に、WordPress サイトの完全なバックアップを作成することを常にお勧めします。数分しかかからず、万が一問題が発生した場合でも安心できます。

クイックで信頼性の高いバックアップソリューションが必要な場合は、Duplicatorを使用しています。これは市場で最高のWordPressバックアッププラグインであり、初心者にも使いやすく、サイトのバックアップまたは移行のどちらにも最適です。

  • ✅ オンデマンドおよび自動WordPressバックアップ
  • ✅ DropboxやGoogle Driveなどのリモートロケーションに安全に保存
  • ✅何か問題が発生した場合の簡単な1クリック復元

詳細については、WordPressウェブサイトのバックアップ方法に関するガイドを参照してください。

バックアップの準備ができたら、次のステップに進んでも安全です。そこで問題の修正方法を説明します。

ステップ2:ai-optimizeクラスを防ぐためのコードスニペットを追加する

バックアップの準備ができたので、ai-optimize-{number}およびai-optimize-introductionクラスをクリーンアップする時間です。

クラシックエディターとブロックエディター(Gutenberg)の両方、および一括編集に対応する、安全で柔軟なコードスニペットを作成しました。

テーマファイルを編集したり、FTPでファイルを操作したりする必要はありません。代わりに、このスニペットを追加するにはWPCodeプラグインを使用することをお勧めします。これは、重要なものを危険にさらすことなくWordPressサイトのコードスニペットを管理するために私が使用しているものです。(詳細については、私の完全なWPCodeレビューをご覧ください。)

ヒント: WPCodeには、このチュートリアルで使用できる限定的な無料バージョンがあります。ただし、その可能性を最大限に引き出すために有料プランへのアップグレードをお勧めします。

初めてサイトにカスタムコードを追加する場合は、WordPressでサイトを壊さずにカスタムコードスニペットを追加する方法に関するガイドをご覧ください。

まず、WPCodeプラグインをインストールして有効化する必要があります。ヘルプが必要な場合は、WordPressプラグインのインストール方法に関するチュートリアルをご覧ください。

プラグインが有効化されたら、コードスニペット » + スニペットを追加ページに移動し、「カスタムコードを追加(新規スニペット)」ボックスの下にある「+カスタムスニペットを追加」ボタンをクリックしてください。

WPCodeでカスタムコードスニペットを追加

次に、コードスニペットのタイトルを提供する必要があります。これは、このコードを簡単に識別するのに役立つものであれば何でも構いません。

その後、「コードタイプ」ドロップダウンメニューから「PHPスニペット」を選択します。

Yoasst AI最適化バグ修正コードの追加

次に、次のコードをコードプレビューボックスにコピー&ペーストする必要があります。

コードスニペット全体はこちらです。

// For Classic Editor and programmatic updates
function strip_ai_optimize_classes($data, $postarr) {
    if (empty($data['post_content']) || $data['post_type'] !== 'post') {
        return $data;
    }
    $data['post_content'] = strip_ai_optimize_from_content($data['post_content']);
    return $data;
}
add_filter('wp_insert_post_data', 'strip_ai_optimize_classes', 10, 2);

// For Gutenberg/Block Editor
function strip_ai_optimize_classes_rest_insert($prepared_post, $request) {
    if (isset($prepared_post->post_content) && $prepared_post->post_type === 'post') {
        $prepared_post->post_content = strip_ai_optimize_from_content($prepared_post->post_content);
    }
    return $prepared_post;
}
add_filter('rest_pre_insert_post', 'strip_ai_optimize_classes_rest_insert', 10, 2);

// For bulk edit operations - this is the key addition
function strip_ai_optimize_classes_bulk_edit($post_id) {
    $post = get_post($post_id);
    if (!$post || empty($post->post_content) || $post->post_type !== 'post') {
        return;
    }
    $cleaned_content = strip_ai_optimize_from_content($post->post_content);
    if ($cleaned_content !== $post->post_content) {
        remove_action('post_updated', 'strip_ai_optimize_classes_bulk_edit');
        wp_update_post(array(
            'ID' => $post_id,
            'post_content' => $cleaned_content
        ));
        add_action('post_updated', 'strip_ai_optimize_classes_bulk_edit');
    }
}
add_action('post_updated', 'strip_ai_optimize_classes_bulk_edit');

// Catch bulk operations via the bulk_edit_posts action
function strip_ai_optimize_classes_bulk_action($post_ids) {
    if (!is_array($post_ids)) {
        return;
    }
    foreach ($post_ids as $post_id) {
        strip_ai_optimize_classes_bulk_edit($post_id);
    }
}
add_action('bulk_edit_posts', 'strip_ai_optimize_classes_bulk_action');

// Shared function to strip ai-optimize classes
function strip_ai_optimize_from_content($content) {
    if (empty($content) || !is_string($content)) {
        return $content;
    }

    return preg_replace_callback(
        '/class\s*=\s*["\']([^"\']*)["\']/',
        function($matches) {
            $classes = $matches[1];

            // Remove ai-optimize-[number] and ai-optimize-introduction
            $classes = preg_replace('/\bai-optimize-(\d+|introduction)\b\s*/', '', $classes);

            // Clean up spacing
            $classes = preg_replace('/\s+/', ' ', trim($classes));

            return empty($classes) ? '' : 'class="' . $classes . '"';
        },
        $content
    );
}

コードを追加したら、下にスクロールして「挿入」セクションに移動します。

次に、「場所」オプションの横にある「すべて実行」を選択します。

コードスニペットをすべてで実行する

最後に、ページの上部に戻り、右上にあるステータストグルを「アクティブ」に切り替え、次に「スニペットを保存」ボタンをクリックして変更を保存します。

このスニペットをWPCodeを使用してサイトに追加すると、今後作成または更新する投稿からこれらのAI生成クラスが自動的に削除されます。

既存のコンテンツからai-クラスを削除したい場合は、既存のコンテンツを一括編集する必要があります。

ステップ3:すべての投稿からAIクラスを削除する(一括更新)

コードスニペットを配置すると、既存の投稿を編集したり、新しい投稿を公開したりする際に、AIマーカーが自動的にクリーンアップされます。ただし、古い投稿からこれらのクラスを削除するには、WordPressデータベースで検索して置換する必要があります。

これを行うには、WPCodeを使用して別のコードスニペットを追加する必要があります。これは、既存のコンテンツからai-optimize CSSクラスを置き換えます。

単にコードスニペット » + スニペットを追加ページに移動し、「カスタムコードを追加(新規スニペット)」ボックスの下にある「+カスタムスニペットを追加」ボタンをクリックしてください。

一括削除スニペットを追加

その後、「コードタイプ」ドロップダウンメニューからPHPスニペットを選択します。次に、コードスニペットのタイトルを提供する必要があります。これは、このコードを簡単に識別するのに役立つものであれば何でも構いません。

次に、以下のコードをコードプレビューボックスにコピー&ペーストする必要があります。

/**
 * Fixes unwanted 'ai-optimize-introduction' and 'ai-optimize-[number]' classes added by Yoast SEO in post content.
 * Run once and don't forget to disable it
 */

function wpb_fix_yoast_ai_optimize_classes() {
    $args = array(
        'post_type'      => get_post_types(array('public' => true)), // Apply to all public post types
        'posts_per_page' => -1,
        'post_status'    => 'publish',
        'fields'         => 'ids', // Optimize memory usage
    );

    $query = new WP_Query($args);
    $fixed_count = 0;

    if ($query->have_posts()) {
        global $wpdb;

        foreach ($query->posts as $post_id) {
            $content = get_post_field('post_content', $post_id);

            // Remove both ai-optimize-[number] and ai-optimize-introduction classes
            $new_content = preg_replace('/\bai-optimize-(\d+|introduction)\b/', '', $content);

            // Clean up any extra whitespace left behind
            $new_content = preg_replace('/\s+/', ' ', $new_content);

            if ($new_content !== $content) {
                $updated = $wpdb->update(
                    $wpdb->posts,
                    array('post_content' => $new_content),
                    array('ID' => $post_id),
                    array('%s'),
                    array('%d')
                );

                if ($updated !== false) {
                    $fixed_count++;
                    error_log("Fixed post ID: $post_id");
                } else {
                    error_log("Failed to update post ID: $post_id");
                }
            }
        }

        wp_reset_postdata();
    }

    error_log("WPCode cleanup complete. Total posts fixed: $fixed_count");

    // Automatically disable this snippet after it runs
    if (function_exists('wpcode_snippet_deactivate_current')) {
        wpcode_snippet_deactivate_current();
    }
}

// Run only once when the snippet is saved or enabled
add_action('init', 'wpb_fix_yoast_ai_optimize_classes');

コードを追加したら、下にスクロールして「挿入」セクションに移動します。

次に、「場所」オプションの横にある「すべて実行」を選択します。

コードスニペットをすべてで実行する

次に、ページの上部に戻り、ステータストグルを「アクティブ」に切り替えて、「スニペットを保存」をクリックします。

心配しないでください。コンテンツは変更されません。データベースでai-optimizeクラスを検索して削除するだけです。

スニペットを保存して有効化

スニペットは現在公開されています。トリガーするには、ウェブサイトの投稿またはページにアクセスするだけです。

これにより、手動で編集することなく、すべての既存の投稿からai-optimize-{number}およびai-optimize-introductionクラスがクリーンアップされます。

その後、インスペクトツールを使用して、コンテンツにai-optimizeクラスが表示されていないことを確認してください。

重要: ai-optimize クラスを削除したら、コードスニペットページに戻って削除コードスニペットを無効にすることを忘れないでください。

ai-optimize 削除スニペットを無効にする

注意 📝: Yoast SEO Premiumを更新するか、代替ソリューションに移行するまで、最初のコードスニペットをアクティブにしておく必要があります。

ボーナスヒント:代替SEOプラグインへの切り替え(より良く、より強力)

Yoast SEOは長年存在していますが、最近になってその革新は鈍化しています。

WPBeginnerでは、数年前にすべてのサイトでAll in One SEOに切り替えるという決定を下しました。これは大きな決断であり、このケーススタディでそのすべての理由を記録しました:YoastからAll in One SEOに切り替えた理由

オールインワンSEOウェブサイト

現在、すべての個人プロジェクトとすべてのクライアントウェブサイトでAll in One SEOを使用しています。これは私の定番のSEOプラグインであり、以下の機能を提供しています。

  • ✅ AI検索時代に対応する包括的な機能(スキーママークアップ、高度なサイトマップ、AI連携など)
  • ✅ スマートなデフォルト設定とチェックリストによる簡単なセットアップ
  • ✅ ローカル SEO、WooCommerce、Google ニュースなどのサポート強化。

まだ迷っている場合は、詳細な比較表をこちらにまとめました: Yoast SEO vs All in One SEO – どちらが優れたプラグインか?

重要 ⚠️: Yoast SEO Premiumの最新バージョン(バージョン25.3.1以降)に更新した場合、またはAll in One SEOに切り替えた場合は、WPCodeでコードスニペットを無効にすることができます。

WordPress管理画面のコードスニペットページに移動し、スニペットの横にあるトグルを切り替えて無効にするだけです。

コードスニペットをオフにする

ボーナスSEOリソース

Yoast SEOから移行する場合でも、WordPressのSEO戦略を強化したい場合でも、役立つリソースをいくつかご紹介します。

これらのチュートリアルと比較は、時間を節約し、高価な間違いを避け、SEOの取り組みからより良い結果を得るのに役立ちます。

このガイドが、Yoast SEOのai-optimizeクラスの問題を解決し、サイトをより長期的な成果に向けて設定するのに役立ったことを願っています。あなたはこれを成し遂げました。もし助けが必要な場合は、いつでもお手伝いします。

この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

コメント

  1. おめでとうございます。この記事の最初のコメント者になる機会を得ました。
    質問や提案はありますか?コメントを残して、議論を開始してください。

コメントを残す

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。