WordPressの「REST API」へのアクセスは誰でもできないように「ログインしているユーザーのみ許可する方法」

「WP REST API」を利用するために必要なプラグインをインストールすると、方法さえ知っていれば誰でもアクセスしてデータを取得することができます。

このアクセスを制限して「ログインしているユーザーのみ『WP REST API』にアクセスする方法」が紹介されていましたので、今後のためにメモ書きました。

WordPressの「REST API」へのアクセスは誰でもできないように「ログインしているユーザーのみ許可する方法」

[Resolved] Restrict WP API access to a list of approved IP address ranges via .htaccess」の中で紹介されているgistで以下のコードが公開されています。

add_filter( 'rest_authentication_errors', function( $result ) {
 if ( ! empty( $result ) ) {
 return $result;
 }
 if ( ! is_user_logged_in() ) {
 return new WP_Error( 'restx_logged_out', 'Sorry, you must be logged in to make a request.', array( 'status' => 401 ) );
 }
 return $result;
});

やっていること

フック「rest_authentication_errors」を使って、ログインしているかどうかを「is_user_logged_in」で判別して、ログインしていないユーザーにはエラーメッセージを表示するっていうコードですね。

ホワイトリストを作って、IPアドレスでアクセス許可・拒否を指定しようかな〜と思って情報を探していたのですが、この方法も知っておくと今後のために役立ちそうです。

著者:bouya Imamura