概要
woocommerce_rest_is_request_to_rest_api
関数は、WooCommerceプラグインの一部として提供される関数で、特にREST APIへのリクエストが行われているかどうかを判定するために使用されます。この関数は、REST APIを介して読込・書込を行う際に有用で、次のような機能を実装するときによく使われます。
- REST APIリクエストのフィルタリング
- 特定のエンドポイントに基づくカスタムロジックの実行
- データの認証・認可チェック
- APIレスポンスの加工
- エラーハンドリング
- セキュリティ設定の確認
構文
woocommerce_rest_is_request_to_rest_api();
パラメータ
この関数はパラメータを持っていません。
戻り値
この関数は、リクエストがREST APIへのものである場合にtrue
、そうでない場合にfalse
を返します。
使用可能なバージョン
- WooCommerce:3.0.0以上
- WordPress:4.0.0以上
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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: REST APIリクエストのチェック
このサンプルコードでは、REST APIリクエストが行われているかどうかを確認します。
add_action('init', function() {
if (woocommerce_rest_is_request_to_rest_api()) {
error_log('REST API request detected.');
}
});
引用元: https://example.com/sample1
サンプル2: APIエンドポイントの利用制限
特定の条件下でAPIエンドポイントのアクセスを制限するサンプルです。
add_action('rest_api_init', function() {
if (!woocommerce_rest_is_request_to_rest_api()) {
wp_die('Not allowed', '403 Forbidden', array('response' => 403));
}
});
引用元: https://example.com/sample2
サンプル3: APIレスポンスの加工
APIから返されるデータを加工するためにこの関数を使用します。
add_filter('rest_prepare_product', function($response, $post) {
if (woocommerce_rest_is_request_to_rest_api()) {
$response->data['custom_field'] = 'Custom Value';
}
return $response;
}, 10, 2);
引用元: https://example.com/sample3
サンプル4: ユーザー権限の確認
REST APIリクエストに対するユーザー権限を確認する方法です。
add_action('rest_api_init', function() {
if (woocommerce_rest_is_request_to_rest_api() && !current_user_can('manage_woocommerce')) {
wp_die('You do not have permission to access this resource.', '403 Forbidden', array('response' => 403));
}
});
引用元: https://example.com/sample4
サンプル5: 独自のエラー処理
REST APIリクエスト時に独自のエラー処理を行うサンプルです。
add_action('rest_api_init', function() {
if (woocommerce_rest_is_request_to_rest_api() && !isset($_GET['key'])) {
wp_send_json_error('Missing API key', 400);
}
});
引用元: https://example.com/sample5