MENU

rest_jsonp_enabled– Function –

rest_jsonp_enabled は、WordPress REST API において JSONPのサポートが有効かどうかを確認するためのフィルター です。REST APIのセキュリティを強化するために JSONP(JSON with Padding) を無効化するかどうかを管理できます。

目次

機能の説明

  • JSONP は、JavaScriptからクロスドメインリクエストを行うための技術ですが、セキュリティ上の懸念から使用が制限されることが多いです。
  • rest_jsonp_enabled フィルターは、 WordPressのREST APIでJSONPを有効/無効 にするためのオプションを提供します。

JSONPサポートを無効するコード例

add_filter('rest_jsonp_enabled', '__return_false');

上記の例では JSONPサポートを無効 にしています。

  • rest_jsonp_enabled はフィルターとして使用され、JSONPのサポートを必要に応じて制御します。
  • セキュリティ重視 の場合は無効化するのが推奨されますが、 外部サービスとの連携 でJSONPが必要な場合は有効化します。

使用例

// JSONPを無効にする
add_filter('rest_jsonp_enabled', '__return_false');

__return_false は、WordPressの 組み込み関数 で常に false を返します。これにより JSONPサポートが無効 になります。

一緒に使うことが多い関連タグ

rest_api_init

REST API のエンドポイントを 初期化するためのフック です。

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

rest_api_init を使って独自のAPIエンドポイントを登録しています。

rest_authentication_errors

REST APIへのアクセス時に 認証エラー を処理するためのフィルターです。

add_filter('rest_authentication_errors', function ($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('rest_forbidden', 'ログインが必要です。', array('status' => 401));
    }
    return $result;
});

この例では、 未ログインのユーザー にREST APIを利用させないようにしています。

追加情報を取得したい場合

register_rest_route() でエンドポイントを追加する

add_action('rest_api_init', function () {
    register_rest_route('myplugin/v1', '/hello/', array(
        'methods'  => 'GET',
        'callback' => function () {
            return 'Hello, World!';
        },
    ));
});
  • register_rest_route() を使い、 myplugin/v1 のエンドポイント /hello/ を作成しています。
  • リクエストがこのエンドポイントに来た場合、 "Hello, World!" が返されます。

想定されるトラブル

JSONPが無効で外部からのアクセスが制限される

rest_jsonp_enabledfalse に設定したため、JSONPが動作しない。

解決方法

以下のように __return_true に変更して、JSONPを有効にします。

add_filter('rest_jsonp_enabled', '__return_true');

REST APIが認証エラーを返す

rest_authentication_errors フィルターによって 未ログインユーザーが拒否 されている可能性があります。

解決方法

特定のエンドポイントでは 認証不要 にする条件を追加します。

add_filter('rest_authentication_errors', function ($result) {
   if (strpos($_SERVER['REQUEST_URI'], '/public-endpoint/') !== false) {
      return true;
   } return $result;
});

Q&A

JSONPを有効にするのは安全ですか?

JSONPは クロスサイトスクリプティング(XSS)のリスク を伴います。そのため、使用する場合は信頼できるドメインだけからのアクセスを許可するなど、慎重に実装してください。

rest_jsonp_enabled を有効にしても動作しません。なぜですか?

キャッシュプラグインやサーバー設定によって APIリクエストがブロック されている可能性があります。サーバーログやプラグイン設定を確認してください。

REST APIのエンドポイントを確認するにはどうすればいいですか?

WordPressのトップディレクトリに /wp-json/ を付けたURL(例: https://example.com/wp-json/)にアクセスすると、 利用可能なエンドポイント一覧 が確認できます。

まとめ

rest_jsonp_enabled は、 WordPress REST APIでJSONPの有効/無効を制御 するフィルターです。

セキュリティ上の理由から無効化することが推奨されますが、 外部サービスとの連携 が必要な場合には有効にすることも可能です。REST APIを使う際には、このフィルターを適切に設定し、認証や権限の管理も併せて行うことが重要です。

カスタマイズ例

1