概要
wp_send_json
関数は、AjaxリクエストのレスポンスとしてJSON情報を返すために使用される便利な関数です。この関数は、特にWordPressのAjax機能を実装する際に頻繁に利用され、クライアント側にデータを適切にフォーマットして返すことができます。以下は、wp_send_json
関数がよく使われるシナリオの一例です:
- Ajaxを利用した非同期データの取得
- ユーザーのアクションに基づいた情報の返却
- フォーム送信後のフィードバックの提供
- 動的コンテンツの生成
- 計算結果や処理結果のフィードバック
- テーマまたはプラグインの設定をAjaxで更新
- カスタムポストタイプのデータ取得
- フロントエンドのインタラクションの強化
構文
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形式で返す例です。これにより、フロントエンド側でデータを使って動的な表示が可能になります。