概要
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リクエスト時にのみスクリプトをエンキューするためのコードです。