概要
rest_api_init
アクションは、WordPress における REST API が初期化される際に実行されるフックです。このアクションは、カスタムエンドポイントを登録したり、API リクエストの処理を変更したりするために使用されます。主な用途としては以下のような機能が考えられます:
- カスタム REST API エンドポイントの作成
- データのバリデーションや認証の追加
- レスポンスのカスタマイズ
- 他のプラグインやテーマとの統合
- API 用のカスタムパラメータの作成
- 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 から適切なエラーレスポンスを提供できます。