サーチ…


前書き

WordPress REST APIは、開発者がJSON(JavaScript Object Notation)オブジェクトを送受信することにより、サイトとリモートでやり取りできるWordPressデータ型のAPIエンドポイントを提供します。

コンテンツをAPIに送信したり、APIにリクエストしたりすると、その応答はJSONで返されます。これにより、開発者は、クライアント側のJavaScriptから、またはPHP以外の言語で書かれた外部アプリケーションからWordPressコンテンツを作成、読み込み、更新することができます。

備考

このWordPress REST APIの簡単な例がうまくいくためには、その動作の仕組みをより詳しく知る必要があります。公式ドキュメントでは以下について学習することをお勧めします。

  1. Routes / Endpoints - 個々のHTTPメソッドと "エンドポイント"と呼ばれるルートとのマッピングです。これはregister_rest_route()関数を使用して行います。ここでは、 ルートとエンドポイントについて詳しく知ることができます。

  2. リクエスト - WordPress REST APIは、現在のリクエストの情報を格納および取得するために使用されるWP_REST_Requestクラスを定義します。 WP_REST_Requestオブジェクトは、登録されたルートへのHTTP要求を行うたびに自動的に生成されます。リクエストで指定されたデータによって、APIから返されるレスポンスが決まります。ここで、 WP_REST_Requestクラスの詳細を学ぶことができます。

  3. 応答 - APIから取得したデータです。 WP_REST_Responseは、エンドポイントによって返された応答データと対話する方法を提供します。エンドポイント定義では、コールバック(応答)関数の名前を指定して相互作用を行います。ここでは、 WP_REST_Responseクラスの詳細について学ぶことができます。

  4. スキーマ - 各エンドポイントは、わずかに異なるデータ構造を必要とし、それらの構造はAPIスキーマで定義されています。保守可能、検出可能、および容易に拡張可能なエンドポイントが必要な場合は、スキーマを使用することをお勧めします。ここで、 スキーマの詳細を知ることができます。

  5. コントローラクラス - すべての要素を1つの場所にまとめます。コントローラクラスを使用すると、ルートとエンドポイントの登録を管理し、リクエストを処理し、スキーマを利用し、APIレスポンスを生成できます。 WP_REST_RequestWP_REST_Response 2つのコントローラクラスについて既に学習しています。ここでは、 コントローラクラスについて詳しく知ることができます

注:この情報の一部は、公式のWordpress REST APiハンドブック

完全な使用例

add_action('rest_api_init', 'my_rest_validate_endpoint' );
function my_rest_validate_endpoint() {

    // Declare our namespace
    $namespace = 'myrest/v1';

    // Register the route
    // Example URL matching this route:
    // http://yourdomain/wp-json/myrest/v1/guides/tag=europe/price=29
    register_rest_route($namespace,
                        // Using regular expressions we can initially validate the input
                        '/guides/tag=(?P<tag>[a-zA-Z0-9-]+)/price=(?P<price>[0-9]+)',
                        // We can have multiple endpoints for one route
                        array(
                            array(
                                'methods'   => 'GET',
                                'callback'  => 'my_get_guides_handler'
                            )
                        ),
                        // We can register our schema callback
                        // 'schema' => 'my_get_guide_schema',
                
        );

    // You can register another route here the same way

}


// The callback handler for the endpoint
function my_get_guides_handler(WP_REST_Request $request) {

    // Get the parameters:
    $tag = $request->get_param('tag');
    $price = $request->get_param('price');

    // Do something with the parameters
    // for instance: get matching guides from the DB into an array - $results
    // ...
    
    // Prepare the response
    $message = "We've found " . count($results) . " guides ";
    $message .= "(searching for a tag: " . $tag . ", with a price tag: " . $price . ")";

    // The response gets automatically converted into a JSON format
    return new WP_REST_Response(
        array(
            'results' => $results,
            'message' => $message,
            'status' => 'OK'
        ),
        200 );

}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow