3つのエンドポイントの違い。admin-post.php、admin-ajax.php、admin.php

ホーム WordPress ajax(非同期通信) 3つのエンドポイントの違い。admin-post.php、admin-ajax.php、admin.php
クラウドソーシング「ランサーズ」
3つのエンドポイントの違い。admin-post.php、admin-ajax.php、admin.php

admin-post.php、admin-ajax.php、admin.phpの3つのエンドポイントの違い

WordPressでは、管理画面やデータ処理に関連するエンドポイントがいくつか用意されています。その中でも、admin-post.phpadmin-ajax.phpadmin.phpは頻繁に使われます。それぞれの役割と使い分け方を解説します。

admin-post.phpの特徴と使用例

admin-post.phpは、フォーム送信処理やリダイレクト処理に特化したエンドポイントです。以下に特徴をまとめます。

  • フォーム送信後の処理専用:POST/GETリクエストを受け取り、適切な処理を実行します。
  • UIを持たない:管理画面のレイアウトは表示せず、データ処理専用のエンドポイントです。
  • 非ログインユーザー対応admin_post_nopriv_フックで非ログインユーザーのリクエストも処理可能です。

admin-post.phpのコード例

例えば、VCFファイルをエクスポートする処理を実装する場合:


add_action('admin_post_export_customer_vcf', function() {
    // データ処理例: VCFエクスポート
    header('Content-Type: text/vcard');
    echo 'BEGIN:VCARD';
    echo 'FN:Example User';
    echo 'END:VCARD';
    exit;
});

admin-ajax.phpの特徴と使用例

admin-ajax.phpは、非同期データ処理に特化したエンドポイントです。JavaScriptからリクエストを送り、リアルタイムでデータを送受信できます。

  • 非同期リクエスト対応:ページをリロードせずにデータの処理が可能。
  • 動的なUI更新に最適:ユーザー操作に応じてリアルタイムで画面を更新できます。
  • アクションフックwp_ajax_wp_ajax_nopriv_を使用して処理を定義します。

admin-ajax.phpのコード例

JavaScriptからデータを送信して処理を行う例:


// JavaScriptコード例
jQuery.ajax({
    url: ajaxurl, // wp_localize_scriptで定義
    type: 'POST',
    data: {
        action: 'my_ajax_action',
        nonce: my_ajax_obj.nonce,
    },
    success: function(response) {
        console.log(response.message);
    }
});

// PHPコード例
add_action('wp_ajax_my_ajax_action', function() {
    check_ajax_referer('my_ajax_nonce', 'nonce');

    // データ処理例
    wp_send_json_success(['message' => '処理が完了しました']);
});

// 非ログインユーザー用
add_action('wp_ajax_nopriv_my_ajax_action', function() {
    // 同様の処理
});

admin.phpの特徴と使用例

admin.phpは、管理画面のUI構築に使用されます。主にプラグインやテーマの設定ページを作成する際に便利です。

  • 管理画面UI表示:ヘッダー、メニュー、フッターを含む完全な管理画面を提供。
  • アクションフックadmin_menuを使用してメニューに新しいページを追加します。

admin.phpのコード例

プラグイン設定ページを追加する例:


add_action('admin_menu', function() {
    add_menu_page(
        'カスタム設定', // ページタイトル
        '設定',         // メニュータイトル
        'manage_options', // 権限
        'custom-settings', // スラッグ
        'custom_settings_page' // コールバック関数
    );
});

function custom_settings_page() {
    echo '<h1>カスタム設定ページ</h1>';
}

admin-post.phpadmin.php の違い

特徴admin-post.phpadmin.php
主な用途フォーム送信処理管理画面UI表示
ページ遷移ありあり
レスポンスリダイレクトHTML
アクションフックadmin_post_admin_menu
特徴的な機能POST/GETリクエスト処理、リダイレクト対応管理画面のヘッダー、メニュー、フッターを含むUI表示

admin-ajax.php の特徴

特徴admin-ajax.php
主な用途非同期データ処理
ページ遷移なし
レスポンスJSON形式、その他データ形式
アクションフックwp_ajax_(ログインユーザー)
wp_ajax_nopriv_(非ログインユーザー)

3つのファイルの比較表

特徴admin-post.phpadmin-ajax.phpadmin.php
主な用途フォーム送信処理非同期データ処理管理画面UI表示
ページ遷移ありなしあり
レスポンスリダイレクトJSON/データHTML
アクションフックadmin_post_wp_ajax_admin_menu

まとめ

WordPressでの開発では、それぞれのエンドポイントを適切に使い分けることが重要です。

  • admin-post.php:フォーム送信処理に最適。
  • admin-ajax.php:非同期処理やリアルタイムなデータ送受信に使用。
  • admin.php:管理画面の設定ページなどUIを提供する場面で活用。

Web制作のご依頼・ご相談など、お気軽にご連絡ください。

お問い合わせ