概要
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を返すサンプルです。