register_rest_route() の使い方|説明・引数・注意点

説明

register_rest_route() は、独自のREST APIエンドポイントを登録する関数です。

基本構文

register_rest_route( string $route_namespace, string $route, array $args = array(), bool $override = false ): bool

引数

  • $route_namespace:名前空間(例:myplugin/v1)
  • $route:ルート(例:/items)
  • $args:methods、callback、permission_callback など

戻り値

登録できたら true。

使い方(サンプル)

add_action( 'rest_api_init', function() {
	register_rest_route( 'myplugin/v1', '/hello', array(
		'methods'             => 'GET',
		'callback'            => fn() => array( 'message' => 'hello' ),
		'permission_callback' => '__return_true',
	) );
} );

注意点

  • rest_api_init フックで呼びます。
  • permission_callback は必須です(省略するとWordPress 5.5以降で警告が出ます)。公開エンドポイントでも __return_true を明示します。

実務での使いどころ

  • 独自のREST APIのエンドポイントを、追加するとき。
  • JavaScriptや、外部のアプリから呼ぶ、APIを作るとき。

よくあるミスと対処

  • rest_api_init フックの外で呼んでいる。
  • permission_callback を指定していない。WordPress 5.5以降は、未指定だと、警告になる。公開してよいAPIでは、'__return_true' を指定する。
  • 名前空間(my-plugin/v1)を、決めていない。他のプラグインと、重なる。
  • 入力値を、args の validate_callback・sanitize_callback で、検証していない。

NG例

register_rest_route( 'my/v1', '/items', array(
	'methods'  => 'GET',
	'callback' => 'my_items',
) ); // permission_callback がなく、フックの外で呼んでいる

OK例

add_action( 'rest_api_init', function () {
	register_rest_route( 'my-plugin/v1', '/items', array(
		'methods'             => 'GET',
		'callback'            => 'my_items',
		'permission_callback' => '__return_true',
	) );
} );

使い分け早見表

関数 役割
register_rest_route() エンドポイントを登録する
rest_url() REST APIのURLを取得する
rest_ensure_response() 戻り値を、REST用の応答に整える

関連項目

rest_ensure_response()、rest_url()、wp_send_json()

公式リファレンス:register_rest_route() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました