WordPressプラグインでSEO診断する方法|管理画面からワンクリックで完結


WordPressでサイトを運営しているとき、SEO診断のたびに別サービスを開いてURLをコピペして——という手順を繰り返していませんか?

この記事では、WordPressの管理画面からワンクリックでSEOスコアを確認できるプラグインの使い方と、その技術構成・セキュリティ対策を解説します。プラグイン開発に興味があるWeb制作者にも参考になる内容です。


このプラグインでできること

CodeQuest SEO_CHECKのWordPressプラグイン(GitHub: masakazuimai/codequest-seo-check-plugin)は、WordPress管理画面に診断UIを追加するシンプルなプラグインです。

URLを入力して「診断する」を押すだけで、100点満点のSEOスコアと4カテゴリの内訳がその場で表示されます。別ウィンドウを開く必要はありません。

管理画面内でSEOスコアと4カテゴリの内訳が確認できる

診断される4つのカテゴリ

  • 構造化データ(40点):JSON-LDの有無・Schema.orgタイプ・必須プロパティ
  • 基本SEO(30点):タイトル・メタタグ・見出し構造・canonical
  • コンテンツ品質(20点):文字数・画像alt属性・内部リンク数
  • 技術的SEO(10点):HTTPS・モバイル対応・ページ速度

診断ロジックの詳細は、ブラウザ版の▶ CodeQuest SEO_CHECKと共通です。プラグインは「管理画面から呼び出せる入口」として機能します。


なぜWordPressプラグインとして作ったのか

CodeQuest SEO_CHECKはもともとブラウザで使うWebアプリです。それでも使い勝手に課題がありました。

WordPressでサイトを運営しているユーザーにとって、「別のサービスを開いて、URLをコピペして、診断する」という手順はひと手間です。管理画面に組み込むことで、ログイン中の状態からワンクリックで自分のサイトを診断できるようになります。


技術構成:PHPのみのシンプルな設計

プラグイン自体はPHPのみで構成されており、外部ライブラリは使っていません。SEO診断のロジックはすべてAPI側(Cloudflare Workers + Hono)にあるため、プラグインは「APIを呼んで結果を表示する」だけのシンプルな構成です。

データの流れは次のとおりです。

  1. WordPress管理画面でURLを入力し「診断する」をクリック
  2. プラグイン(PHP)がWordPress標準のHTTP API(wp_remote_post)で外部APIにリクエストを送る
  3. APIがHTMLを解析してスコアを計算し、JSONで返す
  4. 管理画面にスコアと内訳が表示される(jQuery + CSS)

外部APIとの通信にはWordPress標準のHTTP APIを使う

WordPressから外部APIを呼び出すには、PHPの cURL を直接使う方法もありますが、サーバー環境による互換性の問題が出やすいため、WordPressが標準で用意している wp_remote_post を使うのが鉄則です。

以下はサンプルコードです(実際の実装はGitHubをご確認ください)。

// サンプル: 外部APIにPOSTリクエストを送る
function my_plugin_call_api( $url ) {
    $response = wp_remote_post( 'https://api.example.com/check', array(
        'headers' => array(
            'Content-Type' => 'application/json',
        ),
        'body'    => wp_json_encode( array( 'url' => $url ) ),
        'timeout' => 60,
    ) );

    if ( is_wp_error( $response ) ) {
        return $response;
    }

    $code = wp_remote_retrieve_response_code( $response );
    $body = wp_remote_retrieve_body( $response );
    $data = json_decode( $body, true );

    if ( 200 !== $code ) {
        return new WP_Error(
            'api_error',
            isset( $data['message'] ) ? sanitize_text_field( $data['message'] ) : '不明なエラー'
        );
    }

    return $data;
}

※上記はあくまでサンプルコードです。実際の動作はGitHubリポジトリのコードをご確認ください。

APIキーの認証と安全な保存

APIキーの送信は X-API-Key ヘッダーを使います。キーの保存にはWordPressの get_option / update_option(データベースへの読み書きを担うWordPress標準の関数)を使い、設定画面では type="password" で表示することで、画面上に平文が見えないようにしています。


WordPress公式ディレクトリ申請で必要なセキュリティ対策

WordPress公式プラグインディレクトリ(wp.org)への申請では、セキュリティが厳しくチェックされます。最低限必要な対策は5つです。

1. nonce検証(CSRF対策)

nonce(ナンス)とは「一度しか使えないトークン」のことで、悪意のある第三者が管理者になりすましてリクエストを送る攻撃(CSRF)を防ぎます。AJAXリクエストにnonceを付与し、サーバー側で check_ajax_referer を使って検証します。

// サンプル: JS側にnonceを渡す
wp_localize_script( 'my-plugin-js', 'myPluginData', array(
    'ajaxUrl' => admin_url( 'admin-ajax.php' ),
    'nonce'   => wp_create_nonce( 'my_plugin_nonce' ),
) );

// サンプル: AJAX処理の冒頭で検証
function my_plugin_ajax_handler() {
    check_ajax_referer( 'my_plugin_nonce', 'nonce' );
    // 以降の処理
}
add_action( 'wp_ajax_my_plugin_action', 'my_plugin_ajax_handler' );

※上記はあくまでサンプルコードです。

2. 権限チェック

管理者のみが診断を実行できるよう、current_user_can( 'manage_options' ) で権限を確認します。権限のないユーザーがリクエストを送った場合はエラーを返します。

3. 入力サニタイズ・出力エスケープ

サニタイズとは「入力値を安全な形に整形すること」、エスケープとは「HTMLに出力する前に特殊文字を無害化すること」です。URLは esc_url_raw、HTML出力は esc_htmlesc_attr を使います。外部APIが返す値も信頼せず、すべてサニタイズしてからフロントに渡します。

4. uninstall.phpでDBを掃除する

プラグイン削除時にデータベースに残ったオプション(APIキーなど)を削除します。uninstall.php を用意することで、アンインストール後にデータが残り続けるのを防ぎます。

5. ABSPATHチェック

全PHPファイルの先頭で defined( 'ABSPATH' ) を確認します。これにより、WordPressを経由せずにPHPファイルを直接URLアクセスされた場合に即座に処理を終了できます。


設計の考え方:プラグインは「入口」に絞る

CodeQuest SEO_CHECKにはキーワード調査・競合比較・Core Web Vitals測定など多くの機能があります。しかしプラグインにはSEOスコア診断だけを入れ、他の機能は本体サービスへの導線リンクとして設置しています。

全機能を詰め込まない理由は明確です。管理画面に機能を詰め込むとUXが悪化し、プラグインが重くなり、メンテナンスコストも増えます。プラグインを「入口」にして本体サービスに送客する構造の方が、ユーザーにとっても開発者にとっても合理的です。

SEO_CHECKの全機能・料金プランはこちら


よくある質問

Q. プラグインは無料で使えますか?

GitHubからインストールすれば無料で利用できます。診断にはCodeQuest SEO_CHECKのAPIキー(Freeプランなら登録後に無料取得可能)が必要です。

Q. WordPress公式ディレクトリからインストールできますか?

現在申請中です。公式ディレクトリへの掲載後は、管理画面の「プラグインを追加」から検索してインストールできるようになります。

Q. 診断結果はどこで詳しく確認できますか?

プラグインでは4カテゴリのスコア概要を確認できます。改善コードの自動生成や競合比較などの詳細機能は、ブラウザ版のCodeQuest SEO_CHECKをご利用ください。


まとめ

WordPressの管理画面にSEO診断を組み込むことで、別サービスを開かずにワンクリックで診断できるようになります。プラグインの構成はシンプルで、外部APIを呼んで結果を表示するだけです。

  • 外部API呼び出しには wp_remote_post を使う(cURL直接は非推奨)
  • nonce・権限チェック・サニタイズ・エスケープは最初から実装する
  • プラグインに全機能を詰め込まず「入口」に絞る設計が長持ちする

SEOスコアの詳細確認や改善コードの自動生成は、ブラウザ版のCodeQuest SEO_CHECKでお試しください。

CodeQuest SEO_CHECKを無料で試す