ワードプレスのwp_send_json関数の使用方法・解説

概要

wp_send_json関数は、AjaxリクエストのレスポンスとしてJSON情報を返すために使用される便利な関数です。この関数は、特にWordPressのAjax機能を実装する際に頻繁に利用され、クライアント側にデータを適切にフォーマットして返すことができます。以下は、wp_send_json関数がよく使われるシナリオの一例です:

  1. Ajaxを利用した非同期データの取得
  2. ユーザーのアクションに基づいた情報の返却
  3. フォーム送信後のフィードバックの提供
  4. 動的コンテンツの生成
  5. 計算結果や処理結果のフィードバック
  6. テーマまたはプラグインの設定をAjaxで更新
  7. カスタムポストタイプのデータ取得
  8. フロントエンドのインタラクションの強化

構文

wp_send_json( $response, $status_code );

パラメータ

  • $response (mixed) – JSONエンコードするデータ。配列やオブジェクトも適用可能。
  • $status_code (int) -(オプション)HTTPステータスコード。デフォルトは200。

戻り値

この関数は、HTTPレスポンスを直接出力し、正しいヘッダーを設定した後、スクリプトの実行を終了します。

関連する関数

使用可能なバージョン

wp_send_jsonは、WordPress 3.5.0から使用可能です。

コアファイルのパス

wp-includes/rest-api/class-wp-rest-response.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

サンプルコード

1. 基本的なJSONレスポンスの返却

add_action('wp_ajax_my_action', 'my_ajax_function');

function my_ajax_function() {
    $data = ['message' => 'Hello, World!'];
    wp_send_json($data);
}

このコードは、my_actionというAjaxリクエストに対して、単純なメッセージを返すためのものです。

2. エラーメッセージを送信する例

add_action('wp_ajax_my_action', 'my_ajax_function');

function my_ajax_function() {
    if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'my_nonce')) {
        wp_send_json(['error' => 'Unauthorized'], 403);
    }

    wp_send_json(['success' => 'Action completed successfully!']);
}

このサンプルでは、Nonceの検証に失敗した際に403エラーを返し、成功時には成功メッセージをJSON形式で返しています。

3. 配列をJSONとして返す例

add_action('wp_ajax_my_action', 'my_ajax_function');

function my_ajax_function() {
    $data = [
        'users' => [
            ['id' => 1, 'name' => 'Alice'],
            ['id' => 2, 'name' => 'Bob'],
        ]
    ];
    wp_send_json($data);
}

このコードでは、ユーザーの配列をJSON形式で返すための例を示しています。

4. ステータスコードを指定してJSONを返す例

add_action('wp_ajax_my_action', 'my_ajax_function');

function my_ajax_function() {
    $data = ['status' => 'error', 'message' => 'Invalid request'];
    wp_send_json($data, 400);
}

HTTP 400エラーを指定しつつ、JSON形式でエラーメッセージを返しています。

5. 複雑なデータを返す例

add_action('wp_ajax_my_action', 'my_ajax_function');

function my_ajax_function() {
    $data = [
        'products' => [
            ['id' => 1, 'name' => 'Product 1', 'price' => 100],
            ['id' => 2, 'name' => 'Product 2', 'price' => 150]
        ],
        'total' => 250
    ];
    wp_send_json($data);
}

複数の商品情報と合計値をJSON形式で返す例です。これにより、フロントエンド側でデータを使って動的な表示が可能になります。

この関数について質問する


上の計算式の答えを入力してください