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

概要

wp_json_encode関数は、PHPのデータをJSON形式にエンコードするためのWordPressの補助関数です。この関数は、特に以下のような機能を実装する際によく使われます。

  1. AJAXレスポンスの生成
  2. REST APIの応答の作成
  3. フロントエンドでのデータの動的表示
  4. JavaScriptへのデータの埋め込み
  5. プラグインやテーマでの設定オプションの保存
  6. データベースからのデータのJSON形式での取得
  7. ビジュアルエディタやカスタムコントロールのデータの準備
  8. カスタム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を返すサンプルです。

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


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