概要
wp_json_encode関数は、PHPのデータをJSON形式にエンコードするためのWordPressの補助関数です。この関数は、特に以下のような機能を実装する際によく使われます。
- AJAXレスポンスの生成
- REST APIの応答の作成
- フロントエンドでのデータの動的表示
- JavaScriptへのデータの埋め込み
- プラグインやテーマでの設定オプションの保存
- データベースからのデータのJSON形式での取得
- ビジュアルエディタやカスタムコントロールのデータの準備
- カスタムAPIエンドポイントの作成
構文
wp_json_encode( $data, $options = 0 );
パラメータ
- $data (mixed): エンコードするデータ。配列またはオブジェクトなど。
- $options (int): JSONエンコードオプション(省略可能)。
戻り値
- JSONエンコードされたデータ(成功時)。エンコードに失敗した場合は
false。
関連する関数
使用可能なバージョン
- WordPress 4.6.0以降。
コアファイルのパス
wp-includes/functions.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エンコード
$data = array( 'name' => 'John', 'age' => 30 );
$json = wp_json_encode( $data );
echo $json; // {"name":"John","age":30}
このサンプルコードは、連想配列をJSON形式にエンコードし、結果を表示しています。
サンプルコード2: JSONエンコードオプションを指定
$data = array( 'name' => 'John', 'preferences' => array( 'color' => 'blue' ) );
$json = wp_json_encode( $data, JSON_PRETTY_PRINT );
echo $json;
/*
{
"name": "John",
"preferences": {
"color": "blue"
}
}
*/
このサンプルコードでは、JSON_PRETTY_PRINTオプションを使用して整形されたJSONを出力しています。
サンプルコード3: エンコード失敗時の処理
$data = "xB1x31"; // 無効なUTF-8文字列
$json = wp_json_encode( $data );
if ( false === $json ) {
echo 'エンコードに失敗しました。';
}
このコードは、エンコードに失敗した場合にエラーメッセージを表示します。
サンプルコード4: AJAXコールバックでの使用
add_action( 'wp_ajax_my_action', 'my_ajax_function' );
function my_ajax_function() {
$response = array( 'status' => 'success', 'message' => 'Data received.' );
wp_send_json( $response ); // wp_json_encodeを使用してJSONで応答
}
この例では、AJAXリクエストの応答としてJSONデータを送信しています。
サンプルコード5: REST APIエンドポイントでの使用
add_action( 'rest_api_init', function () {
register_rest_route( 'my_namespace/v1', '/data/', array(
'methods' => 'GET',
'callback' => function () {
return wp_json_encode( array( 'data' => 'Hello World!' ) );
}
));
});
このコードは、REST APIエンドポイントからJSONを返すサンプルです。