概要
wp_doing_ajax 関数は、現在のリクエストがAJAXリクエストか確認するために使用されます。この関数は、AJAXリクエストに対して特定の処理を行うために非常に役立ちます。特に、WordPressの管理画面やフロントエンドでリアルタイムの更新やデータ通信を行う際に使用されます。
よく使われる場面:
- プラグインやテーマでAJAXによるリアルタイムデータ更新を行う時
- ユーザーインターフェースの向上を目的としたスマートなフィルタ機能の実装
- 投票や評価システムなどの非同期処理を行う時
- データをバックグラウンドで取得し、ページをリフレッシュせずに表示する場合
- フォーム送信後の非同期処理
- 検索機能の非同期実装
- 各種設定の更新をAJAXで行う際
- データベースからの情報をAJAXで取得して表示する時
構文
wp_doing_ajax();
パラメータ
- なし
戻り値
true異なるAJAXリクエストであれば、falseそれ以外の場合。
関連する関数
利用可能なバージョン
- この関数は、WordPress 4.7.0以降で使用可能です。
コアファイルのパス
wp-includes/pluggable.php
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
-
AJAXリクエストのチェック
add_action('wp_ajax_my_action', 'my_action_callback'); function my_action_callback() { if (wp_doing_ajax()) { // AJAXリクエストの場合の処理 wp_send_json_success('AJAX request received'); } wp_die(); }- このコードは、AJAXリクエストの場合に特定のメッセージをJSON形式で返す例です。
-
AJAXでのデータ取得
add_action('wp_ajax_get_data', 'fetch_data'); function fetch_data() { if (wp_doing_ajax()) { $data = array('data1' => 'value1', 'data2' => 'value2'); wp_send_json($data); } }- ここでは、AJAXリクエスト受信時にデータを返すサンプルコードです。
-
AJAXエラー処理の実装
add_action('wp_ajax_handle_request', 'handle_ajax_request'); function handle_ajax_request() { if (wp_doing_ajax()) { if (some_error_condition()) { wp_send_json_error('An error occurred'); } else { wp_send_json_success('Request successful'); } } }- エラー条件に応じてAJAX経由でエラーメッセージを返すコードです。
-
AJAXによるフォーム処理
add_action('wp_ajax_submit_form', 'handle_form_submission'); function handle_form_submission() { if (wp_doing_ajax()) { // フォームデータを処理 $formData = $_POST['data']; // 処理結果を返す wp_send_json_success('Form submitted: ' . $formData); } }- フォームデータをAJAXで受け取り、その結果を返す例です。
-
AJAXリクエストのフロントエンドエンキュー
function enqueue_my_scripts() { if (wp_doing_ajax()) { // スクリプトをエンキュー wp_enqueue_script('my-script', get_template_directory_uri() . '/js/my-script.js', array('jquery')); } } add_action('wp_enqueue_scripts', 'enqueue_my_scripts');- AJAXリクエスト時にのみスクリプトをエンキューするためのコードです。