プラグインWooCommerceのrest_api_initアクションの使用方法・解説

概要

rest_api_init アクションは、WordPress における REST API が初期化される際に実行されるフックです。このアクションは、カスタムエンドポイントを登録したり、API リクエストの処理を変更したりするために使用されます。主な用途としては以下のような機能が考えられます:

  1. カスタム REST API エンドポイントの作成
  2. データのバリデーションや認証の追加
  3. レスポンスのカスタマイズ
  4. 他のプラグインやテーマとの統合
  5. API 用のカスタムパラメータの作成
  6. API リクエストに対するフィルタリングやマッピングの実装

構文

add_action( 'rest_api_init', 'your_function_name' );

パラメータ

  • your_function_name:このフックに関連付けたい関数名。

戻り値

このアクション自体は戻り値を返しませんが、関連付けられた関数が必要に応じてデータを返すことができます。

使用可能なプラグイン WooCommerce のバージョン

WooCommerce バージョン 2.6 以上で使用可能です。

使用可能な WordPress のバージョン

WordPress バージョン 4.4 以上で使用可能です。

この関数のアクションでの使用可能性

アクション 使用例
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: カスタムエンドポイントの作成

add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v1', '/endpoint/', array(
        'methods' => 'GET',
        'callback' => 'my_custom_function',
    ));
});

function my_custom_function( WP_REST_Request $request ) {
    return new WP_REST_Response( 'Hello World', 200 );
}

このサンプルコードは、myplugin/v1/endpoint/ というカスタム REST API エンドポイントを作成します。このエンドポイントに GET リクエストを送ると、Hello World というレスポンスが返されます。

サンプルコード 2: 認証の追加

add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v1', '/secure-endpoint/', array(
        'methods' => 'GET',
        'callback' => 'my_secure_function',
        'permission_callback' => '__return_true',
    ));
});

function my_secure_function( WP_REST_Request $request ) {
    return new WP_REST_Response( 'Secure Data', 200 );
}

このサンプルコードでは、認証なしでアクセス可能な REST API エンドポイントを作成します。呼び出すことで Secure Data というデータを取得できますが、permission_callbackを使って別の認証メカニズムを実装することも可能です。

サンプルコード 3: 複数メソッドに対応するエンドポイント

add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v1', '/mixed-endpoint/', array(
        'methods' => array( 'GET', 'POST' ),
        'callback' => 'my_mixed_function',
    ));
});

function my_mixed_function( WP_REST_Request $request ) {
    if ( $request->get_method() === 'POST' ) {
        return new WP_REST_Response( 'Data Posted', 200 );
    }
    return new WP_REST_Response( 'Data Retrieved', 200 );
}

このサンプルコードでは、GET および POST メソッド両方に対応したエンドポイントを作成します。GET リクエストには Data Retrieved が、POST リクエストには Data Posted がレスポンスされます。

サンプルコード 4: カスタムパラメータの追加

add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v1', '/param-endpoint/(?P<id>d+)', array(
        'methods' => 'GET',
        'callback' => 'my_param_function',
    ));
});

function my_param_function( $data ) {
    return new WP_REST_Response( 'Received ID: ' . $data['id'], 200 );
}

このサンプルコードでは、URL パラメータを持つエンドポイントを作成しています。id パラメータを取得し、その値を含むレスポンスを返します。

サンプルコード 5: ステータスコードをカスタマイズする

add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v1', '/status-endpoint/', array(
        'methods' => 'GET',
        'callback' => 'my_status_function',
    ));
});

function my_status_function() {
    return new WP_REST_Response( 'Resource Not Found', 404 );
}

このサンプルコードでは、リソースが見つからない場合に 404 ステータスコードを返します。このようにして、REST API から適切なエラーレスポンスを提供できます。

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


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